Numpy delete()从2D数组中删除具有相同元素的不同数组

时间:2019-10-21 19:25:40

标签: python numpy numpy-ndarray

我有一个2D numpy数组,例如 B = [[1. 0.], [0. 1.], [3. 1.]]  并且我想删除[0. 1.],但是当我这样做时:

B = np.delete(B, [0, 1], 0)
print(B)

两个[1. 0.], [0. 1.]都被删除,剩下的就是我
[[3. 1.]]

因此,我想delete()不能识别具有相同元素的不同数组。我该怎么办?

3 个答案:

答案 0 :(得分:3)

您正在要求delete()通过将[0,1]作为参数来删除第一个索引和第二个索引。第二个参数是您要从中删除值的索引。 您应该尝试:

np.delete(B, 1, 0)

答案 1 :(得分:0)

np.delete(arr, idx)删除idx中指定位置的元素

如此

B = np.delete(B, [0, 1], 0)

正在删除位置0和1处的元素,它们是您提到的元素[1. 0.][1. 0.]

因此要从2D数组中删除特定数组,您需要知道要删除的元素的索引。你可以像这样做一个丑陋的班轮

B = np.delete(B, np.where((B==[0,1]).all(1)), 0)

答案 2 :(得分:0)

按值删除:

B = np.array([[1., 0.], [0., 1.], [3., 1.]])
value = [3,1]

1)通过保留所有其他内容(推荐):

B[(value!=B).any(1)]
# array([[1., 0.],
#        [0., 1.]])

2)使用delete

np.delete(B,np.where((value==B).all(1)),0)
# array([[1., 0.],
#        [0., 1.]])