Python 在数据集中添加或删除特定行或列

Python 在数据集中添加或删除特定行或列,python,hdf5,h5py,Python,Hdf5,H5py,创建后,如何从NxM阵列中添加或删除特定的行或列 我的问题与类似,但我不想盲目地截断或扩展数组。删除时,我需要能够指定要删除的确切行或列 对于添加,我知道在创建初始数据集时必须指定maxshape=(None,None),但该方法似乎不允许您指定在缩小大小时哪些行或列被截断。h5py并不是专门为此设计的。可能是一个更好的库,因为它是围绕表的概念构建的 话虽如此,以下是如何做到这一点: In [1]: f = h5py.File('test.h5') In [2]: arr = rand(4,4

创建后,如何从NxM阵列中添加或删除特定的行或列

我的问题与类似,但我不想盲目地截断或扩展数组。删除时,我需要能够指定要删除的确切行或列


对于添加,我知道在创建初始数据集时必须指定
maxshape=(None,None)
,但该方法似乎不允许您指定在缩小大小时哪些行或列被截断。

h5py并不是专门为此设计的。可能是一个更好的库,因为它是围绕表的概念构建的

话虽如此,以下是如何做到这一点:

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行。如果你打算经常这样做的话,你可以很容易地写一个包装