我有一個 A(5x5)元素陣列和第二個 B 元素陣列(5x1)。現在我想用 B 替換 A 的列。我的陣列是
A=array([[1, 2, -3, 4, 5],[1, 2, -3, -4, 5],[-1, 2, -3, -4, 5],[-1, -2, -3, -4, 5],[-1, -2, -3, -4, -5]])
and
B=array([-10. , -11.5, -13. , -14.5, -16. ])
因此,當遇到第一個負數時,它應該用 B 替換每一列。比如A的第一列,第一個負元素在A[2][0](-1),所以A的第一列替換為B[2],第二列的第一個負元素是在 A[3][1] 并且該列替換為 B[3] 等。所以我的最終輸出是
A=(alpha[2],alpha[3],alpha[0],alpha[1],alpha[4])= (-13.0, -14.5, -10.0, -11.5, -16.0)
到目前為止我的代碼是
A=array([[1, 2, -3, 4, 5],[1, 2, -3, -4, 5],[-1, 2, -3, -4, 5],[-1, -2, -3, -4, 5],[-1, -2, -3, -4, -5]])
B=np.linspace(-10,-16,5)
for i in range(len(B)):
A[:,i][A[:,i]<0]=alpha[i]
但這并沒有給出正確的答案。
先感謝您!
uj5u.com熱心網友回復:
您可以使用argmax找到每一列的第一行,其中有一個負值,然后使用該結果作為 B 的索引:
import numpy as np
A = np.array([[1, 2, -3, 4, 5],[1, 2, -3, -4, 5],[-1, 2, -3, -4, 5],[-1, -2, -3, -4, 5],[-1, -2, -3, -4, -5]])
B = np.linspace(-10, -16, 5)
A2 = B[np.argmax(A < 0, axis=0)]
輸出:
array([-13. , -14.5, -10. , -11.5, -16. ])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/478449.html
上一篇:在每2個元素之后在串列中插入元素
下一篇:熊貓資料框連接填充僅選擇NaN
