我有兩個大型二維陣列,一個帶有值,另一個帶有“有效”值的掩碼。
vals = np.array([
[5, 2, 4],
[7, 8, 9],
[1, 3, 2],
])
valid = np.array([
[False, True, True],
[False, False, True],
[False, True, True],
])
我的目標是為每一行valid==True獲取第一個值 when ,并[2, 9, 3]以最快的方式獲得該型別的向量:。
我嘗試應用掩碼并從中查詢,但它破壞了結構:
vals[valid]
> array([2, 4, 9, 3, 2])
我嘗試遍歷所有索引,但我想知道是否有更快的矢量化方法來做到這一點。謝謝!
uj5u.com熱心網友回復:
嘗試:
vals[np.arange(len(vals)), np.argmax(valid,axis=1)]
或使用np.take_along_axis:
np.take_along_axis(vals, np.argmax(valid,axis=1)[:,None], axis=1).ravel()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/314067.html
下一篇:意想不到的答案
