Как умножить диагональные элементы друг на друга, используя NumPy? - PullRequest
0 голосов
/ 13 марта 2019

Для целей данного упражнения рассмотрим матрицу, в которой элемент m_{i, j} задан правилом m_{i, j} = i*j, если i == j и 0 else.

Есть ли простой "тупой" способ вычисления такой матрицы без необходимости прибегать к if операторам, проверяющим индексы?

Ответы [ 3 ]

1 голос
/ 13 марта 2019

Вы можете использовать функцию numpy diag для построения диагональной матрицы, если вы зададите ей предполагаемую диагональ в виде одномерного массива в качестве входных данных.

Так что вам просто нужно создать это, как [i**2 for i in range (N)] с N размером матрицы.

0 голосов
/ 13 марта 2019

Вы можете использовать единичную матрицу, заданную numpy.identity(n), а затем умножить ее на n размерный вектор.

0 голосов
/ 13 марта 2019

Предполагая, что у вас матрица в квадрате, вы можете сделать это:

import numpy as np

ary = np.zeros((4, 4))
_ = [ary.__setitem__((i, i), i**2) for i in range(ary.shape[0])]
print(ary)
# array([[0., 0., 0., 0.],
#        [0., 1., 0., 0.],
#        [0., 0., 4., 0.],
#        [0., 0., 0., 9.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...