Подтвердить что ты не робот

Как найти скалярный продукт матрицы Numpy?

Мне интересно, есть ли простой способ умножить матрицу numpy на скаляр. По сути, я хочу, чтобы все значения были умножены на константу 40. Это была бы матрица nxn с 40 по диагонали, но мне интересно, есть ли более простая функция для масштабирования этой матрицы. Или как я могу сделать матрицу с той же формой, что и моя другая матрица, и заполнить ее диагональю?

Извините, если это кажется немного базовым, но по какой-то причине я не смог найти это в документе.

4b9b3361

Ответ 1

Если вам нужна матрица с диагональю 40 и нулями всюду, вы можете использовать функцию NumPy fill_diagonal() на матрице нулей. Таким образом, вы можете напрямую:

N = 100; value = 40
b = np.fill_diagonal(np.zeros((N, N)), value)

Это связано только с установкой элементов на определенное значение и, следовательно, скорее всего будет быстрее, чем код, включающий в себя умножение всех элементов матрицы на константу. Этот подход также имеет то преимущество, что явно указывает, что вы заполняете диагональ определенным значением.

Если вы хотите, чтобы диагональная матрица b имела тот же размер, что и другая матрица a, вы можете использовать следующий ярлык (нет необходимости в явном размере N):

b = np.fill_diagonal(np.zeros_like(a), value)

Ответ 2

Легко:

N = 100
a = np.eye(N) # Diagonal Identity 100x100 array
b = 40*a # multiply by a scalar

Если вам действительно нужна матрица numpy против массива, вы можете сделать a = np.asmatrix(np.eye(N)). Но вообще говоря, * является умножением по элементам в numpy.

Ответ 3

В ответе @EOL b будет "None", возвращаемое значение fill_diagonal не является заполненным массивом.