索引0超出轴0的大小为0的范围

joh*_*nry 8 python arrays

我正在填充两个数组,field_in_k_space_REAL并且field_in_k_space_IMAGINARY,使用从高斯分布中提取的值,在我对数组进行逆变换时,注意尊重对称性以获得真实场.这是代码:

field_in_k_space_REAL = zeros(n, float)
field_in_k_space_IMAGINARY = zeros(n, float)

field_in_k_space_REAL[0] = 0.0

for i in range(1, int(n/2+1)):
    field_in_k_space_REAL[i] = np.random.normal(mu, math.sqrt((1/2)*math.exp(-(2*math.pi*i*sigma/L)*(2*math.pi*i*sigma/L))))

x = range(int(n/2+1), int(n))
y = range(1, int(n/2))
zipped = zip(x, y)

for j, j2 in zipped:
    field_in_k_space_REAL[j] = field_in_k_space_REAL[j-2*j2]

field_in_k_space_IMAGINARY[0] = 0.0

for i in range(1, int(n/2)):
    field_in_k_space_IMAGINARY[i] = np.random.normal(mu, math.sqrt((1/2)*math.exp(-(2*math.pi*i*sigma/L)*(2*math.pi*i*sigma/L))))

field_in_k_space_IMAGINARY[n/2] = 0.0

for j, j2 in zipped:
    field_in_k_space_IMAGINARY[j] = - field_in_k_space_IMAGINARY[j-2*j2]

print 'field_k', field_in_k_space_REAL
Run Code Online (Sandbox Code Playgroud)

但我一直有以下错误:

 field_in_k_space_REAL[0] = 0.0
IndexError: index 0 is out of bounds for axis 0 with size 0
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么以及如何解决它?

Jam*_*her 12

我的猜测是数组field_in_k_space_REAL的长度实际为0,很可能是因为你n = 0在代码中进一步设置了(你可以n在循环中使用吗?).当我直接初始化长度为0的数组时,我可以重现错误.