[英]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.