用户登录
用户注册

分享至

几个数组在Python Numpy中的元素乘法

  • 作者: 青菜白玉汤1
  • 来源: 51数据库
  • 2022-10-19

问题描述

编写一些量子力学例程时,我发现了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恰好接受两个输入数组。可选的第三个参数是可用于存储结果的输出数组。(如果没有提供,则创建并返回一个新数组。)当您传递三个数组时,第三个数组将被前两个数组的乘积覆盖。

软件
前端设计
程序设计
Java相关