我有一個資料陣列,如:
all = [[1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]] etc.
它有大約 4000 對,但通常更少,只有幾百對。
我需要找出這個大資料陣列中是否已經存在一個二值陣列,例如。是否[1,1]存在于陣列中?
所以我需要的功能應該是這樣的:
isValid( all, [1,1] )
>>> True
isValid( all, [1,100] )
>>> False
我無法獲得 numpy 函式isin()或in1d()為我執行此操作。對于串列,我確實找到的一個功能是:
all.index( [1,1] )
>> True
但是當 arg不在陣列中all時,我必須嘗試/捕獲 aValueError然后回傳False- 目前可以接受,但并不理想。
uj5u.com熱心網友回復:
您可以像這樣使用簡單的陣列查找:
a = [[1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]]
[2,0] in a # True
[2,3] in a # False
或者
a.index([2,0]) # result: 4
a.index([3,5]) # throw error, use try catch
uj5u.com熱心網友回復:
如果您安裝了 numpy,您可以使用np.where在 2d numpy 陣列中查找 1d 陣列的索引并檢查是否回傳結果
import numpy as np
def isValid(arr, val):
return len(np.where(np.prod(arr == val, axis = -1))[0]) != 0
all_items = np.array([[1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]] )
search1 = isValid(all_items, [1,1] ) # True
search2 = isValid(all_items, [1,100] ) # False
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/484858.html
上一篇:如何使C函式與資料型別無關
下一篇:如何獲得陣列的10個最小數字?
