下面列出的代码是尝试获得具有另一个部分列和的矩阵,使得结果矩阵的行是从到row[r]的原始矩阵的部分列和。row=0row=r
例如,给定
A = [[0,0,0],
[4,5,6],
[7,8,9],
[10,11,12]]
我想获得
B=[[0,0,0],
[4,5,6],
[11,13,15],
[21,24,27]]
是否有替代方法可以让我消除以下代码中的 for 循环,并允许我使用纯列表理解来代替?
如果我正在处理的实际矩阵相对较大,您是否认为列表理解会比 for 循环或 map/lambda 更高效?
我当前的代码如下:
import numpy as np
# Define matrices M and S
M= np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
H = np.array([0.1, 0.2, 0.3])
# Define matrix S with: S[0] = [0,0,0,0] and S[r>0][c] = M[r][c]xH[r]
S = np.array([[x if r != 0 else 0 for x in [M[r][c] * H[r] for c in range(0, len(M[r]))]] for r in range(len(M))])
# initialize matrix L
L = np.array(np.zeros((int(len(M)),int(len(M[0])))))
#Update Matrix L: L[r][c] = Sum[S[0][c] to S[i=r-1][c]]
for r in range(0, len(L)):
L[r] = [sum([row[i] for row in S[0:r+1]]) for i in range(0,len(S[0]))]
print("S", S)
print("L", L)
浮云间
相关分类