Numpy数组赋值时自动向下取整问题求助
问题原因与解决方法
你遇到的问题核心是numpy数组的数据类型(dtype)限制:
- 当你用
np.array([[3,1],[1,3]])创建数组时,numpy会自动推断元素为整数,因此数组默认使用整数类型(如int32/int64)。 - 整数类型的数组无法存储小数,当你将带小数的计算结果赋值回数组时,numpy会自动截断小数部分,只保留整数位,这就是你看到的“向下取整”现象。
- 单独打印
V[0]*1.8能显示小数,是因为numpy在计算时会临时将数据类型提升为浮点,但这个临时结果不会改变原数组的dtype,赋值回原数组时还是会被强制转换为整数。
解决方法
1. 创建数组时直接指定浮点类型
在创建数组时通过dtype参数明确指定浮点类型,从根源避免问题:
import numpy as np V = np.array([[3,1],[1,3]], dtype=np.float64) V[0] = V[0]/V[0,0] print(V)
输出:
[[1. 0.33333333] [1. 3. ]]
2. 转换已有整数数组的类型
如果已经创建了整数数组,可以用astype()方法将其转换为浮点类型后再操作:
import numpy as np V = np.array([[3,1],[1,3]]) V = V.astype(np.float64) V[0] = V[0]*1.8 print(V)
输出:
[[5.4 1.8] [1. 3. ]]
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

