舉個例子。我有一個陣列test,想要為所有等于ref.
import numpy as np
test = np.array([[2, 3, 1, 0], [5, 4, 2, 3], [6, 7, 5 ,4]])
ref = np.array([3, 4, 5])
我正在尋找相當于
mask = (test == ref[0]) | (test == ref[1]) | (test == ref[2])
在這種情況下應該產生
>>> print(mask)
[[False, True, False, False],
[ True, True, False, True],
[False, False, True, True]]
但不必訴諸任何回圈。
uj5u.com熱心網友回復:
Numpy 帶有一個函式 isin 可以做到這一點
np.isin(test, ref)
哪個回傳
array([[False, True, False, False],
[ True, True, False, True],
[False, False, True, True]])
uj5u.com熱心網友回復:
您可以使用 numpy 廣播:
mask = (test[:,None] == ref[:,None]).any(1)
輸出:
array([[False, True, False, False],
[ True, True, False, True],
[False, False, True, True]])
注意。這比 快numpy.isin,但是會創建一個 (X, X, Y) 大小的中間陣列,其中 X, Y 是測驗的形狀,因此這會在非常大的陣列上消耗一些記憶體
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414895.html
標籤:
