第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法寫(xiě)入 hdf5 文件

無(wú)法寫(xiě)入 hdf5 文件

侃侃爾雅 2022-10-05 18:21:51
我正在嘗試創(chuàng)建 hdf5 文件,但輸出文件為空。我編寫(xiě)了一個(gè) python 代碼,它應(yīng)該循環(huán)運(yùn)行并在創(chuàng)建的數(shù)據(jù)集中寫(xiě)入字符串。文件保存后,我發(fā)現(xiàn)輸出文件總是空的。下面是我寫(xiě)的一段代碼:h5_file_name = 'sample.h5'hf = h5py.File(h5_file_name, 'w')g1 = hf.create_group('Objects')dt = h5py.special_dtype(vlen=str)d1 = g1.create_dataset('D1', (2, 10), dtype=dt)d2 = g1.create_dataset('D2', (3, 10), dtype=dt)for i in range(10):    d1[0][i] = 'Sample'    d1[1][i] = str(i)    d2[0][i] = 'Hello'    d2[1][i] = 'World'    d2[2][i] = str(i)hf.close()如上所述,輸出文件為空。誰(shuí)能指出我在這里缺少什么,非常感謝!
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

您的代碼對(duì)我有用(在 ipython 會(huì)話中):


In [1]: import h5py                                                                                    

In [2]: h5_file_name = 'sample.h5' 

   ...: hf = h5py.File(h5_file_name, 'w') 

   ...: g1 = hf.create_group('Objects') 

   ...: dt = h5py.special_dtype(vlen=str) 

   ...: d1 = g1.create_dataset('D1', (2, 10), dtype=dt) 

   ...: d2 = g1.create_dataset('D2', (3, 10), dtype=dt) 

   ...: for i in range(10): 

   ...:     d1[0][i] = 'Sample' 

   ...:     d1[1][i] = str(i) 

   ...:     d2[0][i] = 'Hello' 

   ...:     d2[1][i] = 'World' 

   ...:     d2[2][i] = str(i) 

   ...: hf.close()   

這運(yùn)行,并創(chuàng)建一個(gè)文件。它不是正常意義上的“空”。但是,如果文件為空,則意味著它沒(méi)有將單詞寫(xiě)入文件?現(xiàn)在的一切都是原始的''。


In [4]: hf = h5py.File(h5_file_name, 'r')                                                              

In [5]: hf['Objects/D1']                                                                               

Out[5]: <HDF5 dataset "D1": shape (2, 10), type "|O">

In [6]: hf['Objects/D1'][:]                                                                            

Out[6]: 

array([['', '', '', '', '', '', '', '', '', ''],

       ['', '', '', '', '', '', '', '', '', '']], dtype=object)

===


問(wèn)題不在于文件設(shè)置,而在于您嘗試設(shè)置元素的方式:


In [45]: h5_file_name = 'sample.h5' 

    ...: hf = h5py.File(h5_file_name, 'w') 

    ...: g1 = hf.create_group('Objects') 

    ...: dt = h5py.special_dtype(vlen=str) 

    ...: d1 = g1.create_dataset('D1', (2, 10), dtype=dt) 

    ...: d2 = g1.create_dataset('D2', (3, 10), dtype=dt) 

    ...:                                                                                               

In [46]: d1[:]                                                                                         

Out[46]: 

array([['', '', '', '', '', '', '', '', '', ''],

       ['', '', '', '', '', '', '', '', '', '']], dtype=object)

In [47]: d1[0][0] = 'sample'                                                                           

In [48]: d1[:]                                                                                         

Out[48]: 

array([['', '', '', '', '', '', '', '', '', ''],

       ['', '', '', '', '', '', '', '', '', '']], dtype=object)

使用tuple索引樣式:


In [49]: d1[0, 0] = 'sample'                                                                           

In [50]: d1[:]                                                                                         

Out[50]: 

array([['sample', '', '', '', '', '', '', '', '', ''],

       ['', '', '', '', '', '', '', '', '', '']], dtype=object)

使用 numpy 數(shù)組d1[0][0]=...可以工作,但那是因?yàn)閐1[0]is a viewof d1,但h5py(顯然)并沒(méi)有完全復(fù)制這一點(diǎn)。 d1[0]是一個(gè)副本,一個(gè)實(shí)際的 numpy 數(shù)組,而不是數(shù)據(jù)集本身。


整個(gè)數(shù)組索引的變化:


In [51]: d1[0, :] = 'sample'                                                                           

In [52]: d1[1, :] = np.arange(10)                                                                      

In [53]: d1[:]                                                                                         

Out[53]: 

array([['sample', 'sample', 'sample', 'sample', 'sample', 'sample',

        'sample', 'sample', 'sample', 'sample'],

       ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']], dtype=object)

In [54]: d2[:,0] = ['one','two','three']                                                               

In [55]: d2[:]                                                                                         

Out[55]: 

array([['one', '', '', '', '', '', '', '', '', ''],

       ['two', '', '', '', '', '', '', '', '', ''],

       ['three', '', '', '', '', '', '', '', '', '']], dtype=object)

使用索引驗(yàn)證類型的更改:


In [64]: type(d1)                                                                                      

Out[64]: h5py._hl.dataset.Dataset

In [65]: type(d1[0])                                                                                   

Out[65]: numpy.ndarray

d1[0][0]='foobar'將更改該d1[0]數(shù)組而不影響d1數(shù)據(jù)集。


查看完整回答
反對(duì) 回復(fù) 2022-10-05
?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

不確定如何使用 h5py 解決此問(wèn)題,但如果您未綁定到特定庫(kù),請(qǐng)查看HDFql,因?yàn)槭褂盟幚?HDF5 文件非常容易。


在 Python 中使用 HDFql,您的用例可以在 hyperslabs 的幫助下解決,如下所示:


import HDFql


HDFql.execute("CREATE AND USE FILE sample.h5")


HDFql.execute("CREATE CHUNKED(1) DATASET objects/D1 AS VARCHAR(10, 2)")


HDFql.execute("CREATE CHUNKED(1) DATASET objects/D2 AS VARCHAR(10, 3)")


for i in range(10):


    HDFql.execute("INSERT INTO objects/D1(%d:::1) VALUES(Sample, %d)" % (i, i))


    HDFql.execute("INSERT INTO objects/D2(%d:::1) VALUES(Hello, World, %d)" % (i, i))


HDFql.execute("CLOSE FILE")

可以在此處找到有關(guān)如何使用 HDFql 的其他示例。



查看完整回答
反對(duì) 回復(fù) 2022-10-05
  • 2 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)