使用 python 将列替换为另一个数组
Replace column with another array using python
我有一个 (5x5)
元素的数组和第二个 (5x1)
的 B 数组。现在我想用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]
但这并没有给出正确答案。
提前致谢!
您可以使用 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. ])
我有一个 (5x5)
元素的数组和第二个 (5x1)
的 B 数组。现在我想用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]
但这并没有给出正确答案。
提前致谢!
您可以使用 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. ])