我有一个二维数组的形状(50,50)。我需要从这个数组的每一列中减去一个值(跳过第一列),这个值是基于该列的索引计算的。例如,使用For循环时,它会如下所示:
for idx in range(1, A[0, :].shape[0]):
A[0, idx] -= idx * (...) # simple calculations with idx
现在,这当然可以正常工作,但是速度非常慢,性能对我的应用程序至关重要。我试着用np.from函数(),然后从原始数组中减去它,但结果与for-loop i实际减法得到的结果不同:
func = lambda i, j: j * (...) #some simple calculations
subtraction_matrix = np.fromfunction(np.vectorize(func), (1,50))
A[0, 1:] -= subtraction_matrix
我做错什么了?或者有其他更好的方法吗?感谢您的帮助!你知道吗
所有的代码片段都表明您要求减法只发生在
A
的第一行(尽管您没有明确提到这一点)。所以,我继续理解。你知道吗关于
from_function()
的使用,您可以使用subtraction_matrix
如下:测试它(假设形状
(5,5)
而不是(50,50)
):输出:
如果希望减法发生在
A
的所有行中,只需使用A[:,1:] -= subtraction_matrix[1:]
行,而不是A[0,1:] -= subtraction_matrix[1:]
行即可相关问题 更多 >
编程相关推荐