簡體   English   中英

Numpy delete() 正在從二維數組中刪除具有相同元素的不同 arrays

[英]Numpy delete() is deleting different arrays with same elements from 2D array

我有一個二維 numpy 數組,如B = [[1. 0.], [0. 1.], [3. 1.]] B = [[1. 0.], [0. 1.], [3. 1.]] B = [[1. 0.], [0. 1.], [3. 1.]]我想刪除[0. 1.] [0. 1.] ,但是當我這樣做時:

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

兩者[1. 0.], [0. 1.] [1. 0.], [0. 1.] [1. 0.], [0. 1.]被刪除,我只剩下
[[3. 1.]]

因此我想delete()不能識別具有相同元素的不同 arrays 。 我能做些什么?

您要求 delete() 通過詢問 [0,1] 作為參數來刪除第一個和第二個索引。 第二個參數是要從中刪除值的索引。 你應該試試:

np.delete(B, 1, 0)

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

所以

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

正在刪除位置 0 和 1 的元素,即您提到的元素[1. 0.] [1. 0.][1. 0.] [1. 0.]

因此,要從 2D 數組中刪除特定數組,您需要知道要刪除的元素的索引。 你可以像這樣做一個丑陋的襯里

B = np.delete(B, np.where((B==[0,1]).all(1)), 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.]])

暫無
暫無

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

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