【发布时间】:2020-11-08 04:38:52
【问题描述】:
我刚刚犯了以下错误:
a = np.array([0,3,2, 1])
a[0] = .001
我期待 0 被 .001 替换(并且我的 numpy 数组的 dtype 会自动从 int 切换到 float)。但是, print (a) 返回:
array([0, 3, 2, 1])
- 有人能解释一下为什么 numpy 会这样做吗?我很困惑,因为将我的整数数组乘以浮点数会自动将 dtype 更改为 float:
b = a*.1 print (b) array([0. , 0.3, 0.2, 0.1])
- 有没有办法限制 numpy 系统地将整数视为浮点数,以防止这种情况发生(并且首先使用 .astype(float) 系统地转换我的 numpy 数组?
【问题讨论】:
-
在分配中,
a[i]=bb被强制转换为匹配a。adtype 无法更改(就地)。从大局来看,这样更安全。您的b是一个新数组。 -
a = np.array([1,2,3], float)是最接近自动浮点数组表示法。
标签: numpy floating-point int dtype