分配给数组元素的值显示为零

时间:2018-10-19 21:48:05

标签: python arrays subtraction

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

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

代码如下:

import numpy as np

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

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

2 个答案:

答案 0 :(得分:2)

在调用np.arange()时,您需要指定数据类型,否则会因为传入的参数为5(int)而推断出索引应该为int。

类似的事情会起作用。

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

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

答案 1 :(得分:1)

问题在于arange创建一个整数数组,因此当您尝试为其分配浮点值时,会将其截断为整数。由于您的值都在0到1之间,因此它们将变为零。