如何用列向量的值填充矩阵中的特定元素。

问题描述 投票:0回答:1

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

例如,我有 :

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)的向量。

python numpy matrix indices triangular
1个回答
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.]]
© www.soinside.com 2019 - 2024. All rights reserved.