为什么将浮点列表赋值给Numpy数组行后元素未发生变更?
问题原因
你初始化data数组时传入的元素全是整数,numpy会自动将数组的dtype设置为整数类型(通常是int32或int64)。给整数类型的数组赋值浮点数时,numpy会自动对浮点数做截断处理,1.1会被直接转为整数1,因此看起来修改操作没有生效。
验证方式
你可以打印数组的dtype属性确认类型:
print(data.dtype) # 输出为 int32 / int64 类整数类型
解决方案
方案1:创建数组时明确指定浮点类型
import numpy as np data = np.array([[1,1,1],[2,3,4]], dtype=np.float64) xdata = [i + 0.1 for i in data[0]] print(xdata) data[0] = xdata print(data)
方案2:如果数组已创建,先做类型转换再修改
data = np.array([[1,1,1],[2,3,4]]) # 先转为浮点类型 data = data.astype(np.float64) xdata = [i + 0.1 for i in data[0]] print(xdata) data[0] = xdata print(data)
两种方案运行后都能得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者narip
相关产品推荐
相关产品推荐

