【发布时间】:2017-08-16 04:11:56
【问题描述】:
我对此完全感到困惑。
来自以下
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) 方法。
当我初始化数组时,它会将值初始化为integers,因此当我用float 索引数组时,它只识别0.4 的integer 部分,因此给了我0。我是这样理解的。这个对吗?。但我仍然对这种行为感到惊讶。
问题:这里到底发生了什么?
【问题讨论】: