如何用列向量的值填充矩阵下三角部分的元素,包括对角线?
例如,我有 :
m=np.zeros((3,3))
n=np.array([[1],[1],[1],[1],[1],[1]]) #column vector
我想替换那些指数为 (0,0),(1,0),(1,1),(2,0),(2,1),(2,2)
从 m
与向量 n
,所以我得到。
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.]]