分配给数组元素的值结果为零
Value assigned to array element comes out as zero
问题:为什么我为其分配了非零值的列表元素变为零?
有一个名为 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.
问题在于 arange
创建了一个整数数组,因此当您尝试为其分配浮点值时,会将其截断为整数。由于您的值都在 0 和 1 之间,因此它们将变成零。
在调用np.arange()时需要指定数据类型,否则会推断索引应该是整数,因为传入的参数是5(一个整数)。
像这样的东西会起作用。
a = np.arange(5, dtype='float')
在此处阅读有关数据类型的更多信息:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.dtype.html#numpy.dtype
问题:为什么我为其分配了非零值的列表元素变为零?
有一个名为 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.
问题在于 arange
创建了一个整数数组,因此当您尝试为其分配浮点值时,会将其截断为整数。由于您的值都在 0 和 1 之间,因此它们将变成零。
在调用np.arange()时需要指定数据类型,否则会推断索引应该是整数,因为传入的参数是5(一个整数)。
像这样的东西会起作用。
a = np.arange(5, dtype='float')
在此处阅读有关数据类型的更多信息:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.dtype.html#numpy.dtype