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

2024-10-06 10:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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时,我刚刚收到错误消息“couldnobratedinput array from shape(400)into shape(1000)”


Tags: 函数numpyloopfornppi数组sig
1条回答
网友
1楼 · 发布于 2024-10-06 10:25:06

数组x有问题,它应该是x = np.linspace(x0, L, Nx),那么代码就可以工作了。 或者您可以定义Boxfunc = np.zeros(shape = (Nx, N))。问题来自于xBoxfunc之间的形状

相关问题 更多 >