【问题标题】:Cannot change value of certain parts of array无法更改数组某些部分的值
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-11
      • 2022-01-20
      • 2017-05-02
      • 1970-01-01
      • 2014-03-27
      • 2017-11-25
      • 2013-11-16
      • 2012-04-17
      相关资源
      最近更新 更多