无法更改数组某些部分的值

时间:2019-03-29 08:50:33

标签: python arrays numpy for-loop

我正在尝试用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)”。

1 个答案:

答案 0 :(得分:1)

数组x存在问题,应该为x = np.linspace(x0, L, Nx),然后您的代码才能正常工作。 或者,您可以定义Boxfunc = np.zeros(shape = (Nx, N))。问题出在xBoxfunc之间。