如何使用列向量中的值填充知道其索引的矩阵的特定元素

How to fill specific elements of a matrix knowing their indices with values from a column vector

如何使用列向量中的值填充矩阵的下三角部分(包括对角线)的元素?

例如我有:

m=np.zeros((3,3))
n=np.array([[1],[1],[1],[1],[1],[1]])   #column vector 

我想用向量 n 替换 m 中索引为 (0,0),(1,0),(1,1),(2,0),(2,1),(2,2) 的值,所以我得到:

m=np.array([[1,0,0],[1,1,0],[1,1,1]])

然后我想对m.T做同样的操作得到结果:

m=np.array([[1,1,1],[1,1,1],[1,1,1]])

有人可以帮助我吗? n 应该是形状为 (6,1)

的向量

我不确定是否会有特定于 numpy 的巧妙方法来执行此操作,但它看起来相对简单,如下所示:

import numpy as np
m=np.zeros((3,3))
n=np.array([[1],[1],[1],[1],[1],[1]])   #column vector
indices=[(0,0),(1,0),(1,1),(2,0),(2,1),(2,2)]

for ix, index in enumerate(indices):
    m[index] = n[ix][0]
print(m)

for ix, index in enumerate(indices):
    m.T[index] = n[ix][0]
print(m)

上面的输出是:

[[1. 0. 0.]
 [1. 1. 0.]
 [1. 1. 1.]]

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]