Элементарное умножение нескольких массивов в Python Numpy

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

f = np.multiply(rowH,colH)
A[row][col]=np.sum(np.multiply(f,w))

, который дает правильный результат. Однако моя первоначальная формулировка была такова:--4-->

A[row][col]=np.sum(np.multiply(rowH, colH, w))

который не выдает сообщение об ошибке, но неправильный результат. Где моя ошибка в том, что я мог бы дать три массива для умножения numpy рутина?

вот полный код:

from numpy.polynomial.hermite import Hermite, hermgauss
import numpy as np
import matplotlib.pyplot as plt

dim = 3
x,w = hermgauss(dim)
A = np.zeros((dim, dim))
#build matrix
for row in range(0, dim):
    rowH = Hermite.basis(row)(x)
    for col in range(0, dim):
        colH = Hermite.basis(col)(x)
        #gaussian quadrature in vectorized form
        f = np.multiply(rowH,colH)
        A[row][col]=np.sum(np.multiply(f,w))
print(A)

::Примечание:: этот код работает только с NumPy 1.7.0 и выше!

1 ответов


ваша вина в том, что вы не читаете документация:

numpy.multiply(x1, x2[, out])

multiply принимает ровно два входных массива. Необязательным третьим аргументом является выходной массив, который можно использовать для хранения результата. (Если это не предусмотрено, создается и возвращается новый массив.) Когда вы передали три массива, третий массив был перезаписан произведением первых двух.