2
循环我想向量化下面的循环效率:numpy的:切片和矢量与一维和二维数组
A = np.array([[0., 1., 0., 2.],
[1., 0., 3., 0.],
[0., 0., 0., 4.],
[2., 0., 4., 0.]]) # quadratic, not symmetric Matrix, shape (i, i)
B = np.array([2., 4., 2., 1.]) # vector shape (i)
C = np.zeros(A.shape) # Result Matrix
# classical Loop:
for i in range(len(B)):
for j in range(len(B)):
C[i, j] = A[i, j]*(B[i]-B[j])
我第一次尝试,在Mathcad中使用矢量化等不就是我想要的:
i = np.arange(len(B))
j = np.arange(len(B))
C[i,j] = A[i,j]*(B[i]-B[j]) # this fails to do what I want
我的第二次尝试是最好的方式吗?还是有更简单更自然的“numpy方式”?
idx = np.indices(A.shape)
C[idx] = A[idx]*(B[idx[0]]-B[idx[1]])
请问您可以编辑修改'B = np.array [2。,4.,2.,1.]'到'B = np.array([2,4,2,1。])'? (我没有做这样一个小edi的声望) – 2013-04-22 14:27:41