Изменить значения в нижней треугольной матрице - PullRequest
0 голосов
/ 03 апреля 2019

Я создал следующую Матрицу:

Q = np.asmatrix(np.tril(-1*np.ones(15), -1)[:, ::-1])

print(Q)
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 0., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.]])

Затем я делаю некоторые вычисления (не относящиеся к вопросу) для матрицы, чтобы изменить значения, в настоящее время установленные на ноль.

В конечном итоге я хотел бы заменить эти -1 на позицию с 100-ю, в матрице "Q" (например, np.asmatrix (np.tril (-100 * np.ones (15)), -1) [:, :: - 1]) является , а не решением).

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Получить позиции индекса значений, равных -1, а затем в любой момент вы можете получить к нему доступ и назначить новые значения

import numpy as np
Q = np.asmatrix(np.tril(-1*np.ones(5), -1)[:, ::-1])

indexes = np.where(Q == -1)

Q[indexes] = -100
print(Q)


[[   0.    0.    0.    0.    0.]
 [   0.    0.    0.    0. -100.]
 [   0.    0.    0. -100. -100.]
 [   0.    0. -100. -100. -100.]
 [   0. -100. -100. -100. -100.]]

Или с помощью MASK

Mask = Q==-1
print(Mask)

Q[Mask] = -100
print(Q)

[[False False False False False]
 [False False False False  True]
 [False False False  True  True]
 [False False  True  True  True]
 [False  True  True  True  True]]
[[   0.    0.    0.    0.    0.]
 [   0.    0.    0.    0. -100.]
 [   0.    0.    0. -100. -100.]
 [   0.    0. -100. -100. -100.]
 [   0. -100. -100. -100. -100.]]
0 голосов
/ 03 апреля 2019

Мы могли бы создать эквивалент mask и использовать его для индексации в Q и присвоения новых значений -

mask = np.tri(len(Q),k=-1,dtype=bool)[:,::-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...