簡體   English   中英

檢查一維 numpy 數組的每個元素是否在二維 numpy 數組的對應行中

[英]Check if each element of 1-D numpy array is in corresponding row of 2-D numpy array

我有兩個數組:

X = np.array([[3, 4, 1], [2, 3, 4], [3, 5, 1]]) 
v = np.array([1, 5, 3])

我想檢查 v 是否在 X 元素中,即 1 在 [3, 4, 1] 中,5 在 [2, 3, 4] 中,3 在 [3, 5, 1] 中並返回1 和 0。所以,在這種情況下,我的答案應該是 [1,0,1]。

謝謝

為 v 創建新軸:

>>> np.any(X - v[:, np.newaxis] == 0, axis=1) * 1
array([1, 0, 1])

numpy.newaxis :newaxis 對象可用於所有切片操作以創建長度為 1 的軸。 newaxis 是 'None' 的別名,可以使用 'None' 代替它,結果相同。

表現

X = np.random.randint(100, 1000, (100000, 1000))
v = np.random.randint(100, 1000, 100000)

%timeit np.any(X - v[:, np.newaxis] == 0, axis=1) * 1
880 ms ± 110 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

我不太了解 NumPy 來使用array對象,但我已經創建了一個可以與普通列表一起使用的函數:

def check_correspondence(lists, numbers):
    for i in range(len(lists)):
        yield int(numbers[i] in lists[i])

每當您調用check_correspondence ,您都需要將其轉換為列表或元組,因為它是一個生成器。 無論如何,它可以修改為接受numpy.array

暫無
暫無

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

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