我有一個 numpy 陣列,如:
a = np.array([[1, 2, 3, 456], [2, 3, 4, 789], [3, 4, 5, 101112], [4, 5, 6, 131415]])
我有一個數字陣列,如:
b = np.array([101112, 456])
我在尋找:
[2, 0]
如何使用 b 獲取 a 中的索引位置?
目前,我使用的是非常低效的嵌套回圈。
我無法讓 np.where 做到這一點,至少在我有限的理解下。
uj5u.com熱心網友回復:
鑒于你的陣列,你可以問:
a = np.array([[1, 2, 3, 456], [2, 3, 4, 789], [3, 4, 5, 101112], [4, 5, 6, 131415]])
b = np.array([101112, 456])
np.isin(a, b)
并得到:
array([[False, False, False, True],
[False, False, False, False],
[False, False, False, True],
[False, False, False, False]])
將它傳遞給any()然后傳遞argwhere給你一個單行:
np.argwhere(np.any(np.isin(a, b), axis=1)).ravel()
# array([0, 2])
uj5u.com熱心網友回復:
您可以申請np.where每個值b
import numpy as np
a = np.array([[1, 2, 3, 456], [2, 3, 4, 789],
[3, 4, 5, 101112], [4, 5, 6, 131415]])
b = np.array([101112, 456])
print([np.where(a == v)[0][0] for v in b]) # [2, 0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368008.html
上一篇:使用python更改列中的值
