Python 索引0超出大小为0的轴0的界限

Python 索引0超出大小为0的轴0的界限,python,arrays,Python,Arrays,我用从高斯分布中提取的值填充两个数组,field\u in_k_space\u REAL和field\u in_k_space\u virtual,在对数组进行逆变换时,注意尊重对称性以获得实场。代码如下: 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\u in_k_space\u REAL
field\u in_k_space\u virtual
,在对数组进行逆变换时,注意尊重对称性以获得实场。代码如下:

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

有人能解释为什么以及如何修复它吗?

我的猜测是,数组
字段\u在k_空间\u REAL
中实际上长度为0,很可能是因为您在代码中进一步设置了
n=0
(您是否在循环中使用
n
)。我可以在直接初始化长度为0的数组时重现错误。

事实上,您最好使用:

field_in_k_space_REAL.loc[index] = 0.0
而不是:

field_in_k_space_REAL[index] = 0.0

这是因为关闭列中的NAN值使用np.isfinite。 例如:

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

n
的值是多少?@Cyber n=32,但是我可以用
n=32
的值来更改它。我无法重现您显示的错误。