我有兩個 numpy 陣列,其中包含 0 和 1。如何在第一個陣列中找到 1 而在第二個陣列中找到 0 的索引?
我試過 np.logical_and
但收到錯誤訊息(builtin_function_or_method' 物件不可下標)
uj5u.com熱心網友回復:
使用np.where(arr1==1)和np.where(arr2==0)
uj5u.com熱心網友回復:
import numpy as np
array1 = np.array([0,0,0,1,1,0,1])
array2 = np.array([0,1,0,0,1,0,1])
ones = np.where(array1 == 1)
zeroes = np.where(array2 == 0)
print("array 1 has 1 at",ones)
print("array 2 has 0 at",zeroes)
回傳:
array 1 has 1 at (array([3, 4, 6]),)
array 2 has 0 at (array([0, 2, 3, 5]),)
uj5u.com熱心網友回復:
我不確定是否有一些內置的 numpy 函式可以為您執行此操作,因為這是一個相當具體的問題。編輯:有,見底部
盡管如此,如果要存在一個,那么如果您傳入一個裸 numpy 陣列,它就必須是一種線性時間演算法,因此撰寫自己的陣列并不困難。
如果我有任何 numpy 陣列(或 python 陣列)myarray,并且我想要一個出現某個物件的索引集合myobject,我們可以使用串列理解在一行中執行此操作:
indices = [i for i in range(len(myarray)) if myarray[i] == myobject]
那么這里發生了什么?
串列推導以以下格式作業:
[<output> for <input> in <iterable> if <condition>]
在我們的例子中,<input>和<output>是 的索引myarray,并且該<condition>塊檢查當前索引處的值是否等于我們想要的值。
編輯:正如 White_Sirilo 有幫助地指出的那樣,numpy.where做同樣的事情,我站得更正
uj5u.com熱心網友回復:
假設您的陣列被稱為jand k。以下代碼回傳所有索引,其中j[index] = 1兩個k[index] = 0陣列都是一維的。如果尺寸不同j,它也可以作業。k
idx_1 = np.where(j == 1)[0]
idx_2 = np.where(k == 0)[0]
final_indices = np.intersect1d(idx_1, idx_2, return_indices=False)
如果您的陣列是二維的,您可以在函式中使用上面的代碼,然后逐行進行。幾乎肯定有更好的方法可以做到這一點,但這在緊要關頭。
uj5u.com熱心網友回復:
問題中給出的兩個 numpy 陣列。陣列 1 和陣列 2
只需使用
one_index=np.where(array1==1)
和
zero_index=np.where(array2==0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/448656.html
