【发布时间】:2019-03-29 08:50:33
【问题描述】:
我正在尝试使用 for loop 中的新值更改数组的行,但无法使其正常工作。
问题与量子物理学中波包的传播有关。
我尝试过使用numpy.dot() 函数,但这不起作用,我尝试制作一个更简单的for loop,它起作用了。
import numpy as np
sig = 10**(-8)
x0 = 50*10**(-9)
L = 200*10**(-9)
N = 400
Nx = 1000
x = np.linspace(x0, L, N)
expsig = np.exp(-((1/2)*(x-x0)**2)/(sig**2))
expimg = np.exp(1j*(x-x0))
Phi = (1/(np.pi**(1/4)*np.sqrt(sig))*expsig*expimg)
Boxfunc = np.zeros(shape = (N, Nx))
for i in range(0, N):
SINnpi = np.sin(((i*np.pi)/L)*x)
Boxfunc[i,:] = np.sqrt(2/L)*SINnpi
Y = Boxfunc[i,:]*Phi
我希望输出是一个 400x1000 数组,其中包含从 Phi 和 Boxfunc 之间相乘得出的新计算值。
当我到达 for 循环中的 Boxfunc 时,我只收到错误消息“无法将输入数组从形状 (400) 广播到形状 (1000)”。
【问题讨论】:
标签: python arrays numpy for-loop