有没有办法只删除2d numpy数组中的单个元素?
例如,假设我有:
x = np.array([[1, 2], [3, 4]])
我希望新版本的x只存储np.array([[1], [3, 4]])
。
这可行吗?
答案 0 :(得分:0)
作为列表操作,这是直截了当的:
In [328]: x = np.array([[1, 2], [3, 4]])
只需使用list
del
删除所需的元素:
In [337]: xl=x.tolist()
In [338]: idx=(0,1)
In [339]: del xl[idx[0]][idx[1]]
In [340]: xl
Out[340]: [[1], [3, 4]]
它可以变回一个数组 - 但它会是锯齿状的,因此是一个列表数组:
In [341]: np.array(xl)
Out[341]: array([[1], [3, 4]], dtype=object)
您还可以使用np.delete
从数组的展平版本中删除此元素:
In [343]: np.ravel_multi_index(idx,x.shape)
Out[343]: 1
In [344]: np.delete(x,np.ravel_multi_index(idx,x.shape))
Out[344]: array([1, 3, 4])
你不能回到2d阵列。它可以分成行数组:
In [345]: np.split(_,[1])
Out[345]: [array([1]), array([3, 4])]
在一般情况下,计算拆分索引会更乏味。