【问题标题】:How to fill specific elements of a matrix knowing their indices with values from a column vector如何用列向量中的值填充矩阵的特定元素,知道它们的索引
【发布时间】:2020-10-07 05:09:57
【问题描述】:

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

例如我有:

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

【问题讨论】:

  • 您从哪里获得索引?是给的吗?
  • 只需键入 np.tril_indices(3) 即可找到索引,因为在每次迭代中我都想替换矩阵的下三角部分

标签: python numpy matrix indices triangular


【解决方案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.]]

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 2016-02-28
    • 2013-05-27
    • 2012-02-24
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    相关资源
    最近更新 更多