我很困惑这个问题。
以下内容是:
我期望的输出是:
以下内容是:
从下面的内容看
import numpy as np
a = np.array([4, -9])
a[0] = 0.4
a
我期望的输出是:
array([ 0.4, -9])
,但它给了我 array([ 0, -9])
。但是当我将dtype
更改为f
时,结果就变成了这样:a = np.array([4, -9], 'f')
a[0] = 0.4
a
这段代码的预期输出是 array([ 0.40000001, -9. ], dtype=float32)
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
的文档中提到:
dtype: 数据类型,可选参数 数组所需的数据类型。如果没有给出,则类型将被确定为容纳序列中对象所需的最小类型。此参数仅用于“向上转型”数组。对于向下转型,请使用 .astype(t) 方法。
当我初始化数组时,它将值初始化为 整数
,因此当我使用 浮点数
索引数组时,它只识别了 0.4
的 整数
部分,因此给出了 0
。这就是我理解的。这正确吗?但我仍然对这种行为感到惊讶。
问题: 到底发生了什么?
dtype=object
来保存浮点数和整数的想法。如果需要混合字符串和数字,那么这样做是可以的,或者更好的方法是用于保存诸如列表之类的东西。但对于纯数值数据,最好使用数值 dtype。 - hpauljdtype
能够完成这项工作?使用float
?还是d
? - Kid Charlamagne