我需要使用矩阵形式转换表达式中的for
循环。我有一个矩阵C
:
矩阵C
:
array([[0, 1, 1],
[1, 0, 0],
[1, 0, 0]])
载体delta_E
:
A
是一个由零组成的矩阵,其维数为C
,向量{
indices = [1, 1, 0, 1]
我找到了C
的列索引,其中:
i0, i1 = np.where(C[indices] == 1)
它们是:
i0 = [0, 1, 2, 3]
i1 = [0, 0, 1, 0]
我想将i0
和i1
中包含的A
索引增加一,并将i1
中包含的E
索引增加{
for k, i, j in enumerate(indices[i0], i1):
A[i,j] += 1
A[j,i] += 1
E[i] += delta_E[k]
结果是:
{cd5>矩阵^:
array([[0, 4, 1],
[4, 0, 0],
[1, 0, 0]])
矩阵E
:
array([4, 7, 0])
是否可以将上面的for
循环转换为矩阵表达式?在
虽然
^{pr2}$k
是唯一的,i,j
索引有重复项。将+=
步骤替换为整个数组计算将需要使用add.at
,它是A[i] += b
的无缓冲替代方案。在对于
E
,我无法复制您的值,但可以复制循环相关问题 更多 >
编程相关推荐