假設我得到了一個 2D numpy 陣列和一個看起來像這樣的數字串列:
[1 2 3 1]
[2 3 1 2]
[3 1 2 3]
[1 2 3 1]
[1, 3]
我需要找到某種方法來生成一個布爾陣列,其中串列中的每個元素都會導致二維陣列中的 True
[True False True True]
[False True True False]
[True True False True]
[True False True True]
我嘗試回圈遍歷串列并使用logical_or 組合它創建的布爾掩碼,但二維陣列是一個大影像,串列長度可以超過300 個元素,很快就會變得非常慢。
如果 numpy 中有一些array in list類似于的操作array == list[0],我找不到它,但它會非常有幫助。
我的代碼目前看起來像
boolean_array = array == mask_list[0]
for list_element in mask_list[0:]:
boolean_array = np.logical_or(blank_boolean, array == list_element)
return boolean_array
(np.where、np.any、np.all 也已嘗試過,但我不知道該怎么做)
(也兩個集合總是整數)
uj5u.com熱心網友回復:
利用np.isin
import numpy as np
arr = np.array([
[1, 2, 3, 1],
[2, 3, 1, 2],
[3, 1, 2, 3],
[1, 2, 3, 1]
])
valid = np.array([1, 3])
print(np.isin(arr, valid))
[[ True False True True]
[False True True False]
[ True True False True]
[ True False True True]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507395.html
