【发布时间】:2015-12-18 23:13:30
【问题描述】:
我想知道为什么每当我将浮点数分配给 numpy 数组时,Python 会将数字截断为整数:
import numpy as np
lst = np.asarray(list(range(10)))
print ("lst before assignment: ", lst)
lst[:4] = [0.3, 0.5, 10.6, 0.2];
print ("lst after assignment: ", lst)
输出:
lst before assignment: [0 1 2 3 4 5 6 7 8 9]
lst after assignment: [ 0 0 10 0 4 5 6 7 8 9]
为什么要这样做?由于您不需要在语言中指定类型,我无法理解为什么 numpy 会在分配给数组(包含整数)之前将 floats 转换为 ints。
【问题讨论】:
-
此行为不适用于原始列表。
-
您将 lst 初始化为整数,然后
dtype没有改变并且小数部分被截断。 -
@erip 你是对的,刚刚检查了我测试原始列表的代码。搞错了