python - Python Numpy 中多个数组的逐元素乘法

标签 python numpy multiplication

编写一些量子力学例程时,我发现了 Python 的 NumPy 的一个奇怪行为。当我对两个以上的数组使用 NumPy 的乘法时,我得到了错误的结果。在下面的代码中,我必须写:

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

产生正确的结果。然而,我最初的表述是这样的:

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 及更高版本!

最佳答案

你的错在于没有阅读 the documentation :

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

multiply 恰好接受两个输入数组。可选的第三个参数是一个输出数组,可用于存储结果。 (如果未提供,则会创建并返回一个新数组。)当您传递三个数组时,第三个数组会被前两个数组的乘积覆盖。

关于python - Python Numpy 中多个数组的逐元素乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16099488/

相关文章:

python - 查找前面没有其他字符串的字符串

python - YAML 文件的 Jinja 语法

python - double np.einsum 的性能以及如何加速

python - NumPy 切片 : All except one array entry

python - 如何将 OpenNI VideoFrame 转换为 OpenCV Mat 数据结构?

java - 如何用Java实现乘法

c# - 从文本框计算十进制数

python - 字符串和文件

c++ - cin input (input is an int) 当我输入一个字母时,它不会打印不正确一次,而是打印正确一次然后在循环的其余部分使用 inc

python - 管理自动生成的索引