Как заполнить определенные c элементов матрицы, зная их индексы, значениями из вектора-столбца - PullRequest
1 голос
/ 17 июня 2020

Как я могу заполнить элементы нижней части angular матрицы, включая диагональ, значениями из вектора-столбца?

Например, у меня есть:

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)

1 Ответ

1 голос
/ 17 июня 2020

Я не уверен, что это будет хитроумный numpy -specifi c способ сделать это, но он выглядит относительно просто, вот так:

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.]]
...