假设我有一个形状为(n,)
的1D numpy数组x
和形状为(m,n)
的2D数组Y
。我想计算
np.sum(x * np.max(Y,axis=0))
即CCD_ 5与矩阵CCD_。如果这些数组很大,并且x
主要由零组成,那么我可能会做很多浪费的max
操作。
有没有什么方法可以以惰性的方式进行计算,从而只计算非零值的最大值?我正在寻找一种优雅的方式——显然,我可以编写一个for循环并检查零值。
您可以使用np.where
来查找非零索引。例如(m=3
和n=6
(:
x= np.array([1,0,0,2,3,1])
Y = np.array([[1,2,3,4,5,6],
[4,5,6,1,2,3],
[7,8,9,4,5,1]])
ind = np.where(x != 0)[0]
result = sum(x[ind]*np.max(Y[:,ind], axis=0))
print (result)
输出
36.0