簡體   English   中英

在 h5py 數據集中添加或刪除特定的行或列

[英]Adding or removing specific rows or columns in an h5py dataset

創建h5py 數據集后,如何在 NxM 數組中添加或刪除特定行或列?

我的問題與類似,但我不想盲目地截斷或擴展數組。 刪除時,我需要能夠指定要刪除的確切行或列。

對於添加,我知道我必須在創建初始數據集時指定maxshape=(None, None) ,但是resize方法似乎不允許您指定如果縮小大小,哪些行或列會被截斷。

h5py 並不是真正為這樣做而設計的。 Pandas可能是一個更好用的庫,因為它是圍繞表的概念構建的。

話雖如此,這是如何做到的:

In [1]: f = h5py.File('test.h5')

In [2]: arr = rand(4,4)

In [3]: dset = f.create_dataset('foo',data=arr,maxshape=(2000,2000))

In [4]: dset[:]
Out[4]:
array([[ 0.29732874,  0.59310285,  0.61116263,  0.79950116],
       [ 0.4194363 ,  0.4691813 ,  0.95648712,  0.56120731],
       [ 0.76868585,  0.07556214,  0.39854704,  0.73415885],
       [ 0.0919063 ,  0.0420656 ,  0.35082375,  0.62565894]])

In [5]: dset[1:-1,:] = dset[2:,:]

In [6]: dset.resize((3,4))

In [7]: dset[:]
Out[7]:
array([[ 0.29732874,  0.59310285,  0.61116263,  0.79950116],
       [ 0.76868585,  0.07556214,  0.39854704,  0.73415885],
       [ 0.0919063 ,  0.0420656 ,  0.35082375,  0.62565894]])

這將從dset刪除第 1 列。 它通過在將數據集縮小一列之前將第 2 列和第 3 列分別分配給 1 和 2 來實現。 交換下標以刪除第 1 行。如果您要經常這樣做,您可以輕松地圍繞它編寫一個包裝器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM