我有一个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()
不能识别具有相同元素的不同数组。我该怎么办?
答案 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.]])