我有一個非常大的陣列,但我將使用一個較小的陣列來解釋。
給定源陣列 X
X = [ [1,1,1,1],
[2,2,2,2],
[3,3,3,3]]
具有相同大小 Y 的目標陣列
Y = [ [-1,-1,-1,-1],
[-2,-2,-2,-2],
[-3,-3,-3,-3]]
還有一個分配陣列 IDX:
IDX = [ [1,0,0,0],
[0,0,1,0],
[0,1,0,1]]
我想通過 IDX 將 Y 分配給 X - 僅分配 IDX==1 在這種情況下,類似于:
X[IDX] = Y[IDX]
將導致:
X = [ [-1,1,1,1],
[2,2,-2,2],
[3,-3,3,-3]]
如何在 numpy/pandas 中有效地完成(不是 for 回圈)?謝謝
uj5u.com熱心網友回復:
如果IDX是布爾型別的 NumPy 陣列,并且是NumPy 陣列XY,那么您的直覺是有效的:
X = np.array(X)
Y = np.array(Y)
IDX = np.array(IDX).astype(bool)
X[IDX] = Y[IDX]
這發生X了變化。
如果您不想進行所有這些型別轉換,或者不想覆寫X,那么np.where()可以一次性完成您想要的操作:
np.where(IDX==1, Y, X)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/493407.html
