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

9

我正在用从高斯分布中提取的值填充两个数组field_in_k_space_REALfield_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

但我一直遇到以下错误:
 field_in_k_space_REAL[0] = 0.0
IndexError: index 0 is out of bounds for axis 0 with size 0

有人能解释一下为什么会出现这个问题以及如何修复吗?


1
“n”的值是多少? - Cory Kramer
@Cyber n = 32,但我可以更改它。 - johnhenry
1
使用 n = 32 的值,我无法重现您展示的错误。 - Cory Kramer
3个回答

12
我的猜测是数组field_in_k_space_REAL实际上长度为0,很可能是因为您在代码中更上方设置了n = 0(您是否在循环中使用了n?)。当我直接初始化长度为0的数组时,我可以重现这个错误。

0

实际上,你最好使用:

field_in_k_space_REAL.loc[index] = 0.0

改为:

field_in_k_space_REAL[index] = 0.0

0

这是因为您的收盘价列中存在NAN值,请使用np.isfinite

例如:

btt_ohlc[np.isfinite(btt_ohlc['Close'])]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接