问题:为什么我为其分配了非零值的列表元素变为零?

有一个名为eta的列表,其中包含许多不同的值。要使用此列表创建一个新列表a,其中每个元素a[i]等于eta[i+1]-eta[i]。可以计算eta[i+1]-eta[i]的值,并且可以检查它是否为我提供了一个非零值,但是当我进行for循环并在某个范围内运行它时,出于某种原因,它会设置for i

这是代码:

import numpy as np

a = np.arange(5)
for i in range(5):
    a[i] = eta[i+1]-eta[i]


尝试打印每个步骤的a[i] = 0值,它以非零数字显示,但是如果打印eta[i+1]-eta[i],则它以零显示。 Screenshot of code with prints

最佳答案

调用np.arange()时,您需要指定数据类型,否则,由于传入的参数为5(一个int),它会推断索引应该为int。

这样的事情会起作用。

a = np.arange(5, dtype='float')


在此处阅读有关dtypes的更多信息:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.dtype.html#numpy.dtype

关于python - 分配给数组元素的值显示为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52900317/

10-12 16:23