为什么numpy向数组写入时float会自动转int,两次打印结果不一致?
两次输出差异的原因
这个现象的核心是NumPy数组的**固定数据类型(dtype)**机制,具体逻辑如下:
- 你初始化数组
A时,所有元素都是整数,NumPy默认将数组的dtype设为整数类型(可执行print(A.dtype)验证,通常为int32或int64)。数组创建完成后dtype是固定的,不会因为后续赋值自动变更。 - 第一次打印的
A[1] - A[0] * A[1, 0] / A[0, 0]是临时计算结果,计算过程涉及除法操作,会自动向上转型为浮点类型,因此输出带小数的浮点数组:[ 0. -2.5 -4. -1.5]。 - 当你把上述浮点结果赋值给
A[1]时,因为原数组A的dtype是整数类型,NumPy会对浮点值做截断式强制类型转换,直接丢弃小数部分(不会四舍五入):-2.5转换为整数得到-2,-1.5转换为整数得到-1,因此赋值后打印A[1]得到整数结果[ 0 -2 -4 -1]。
如果需要避免这种自动类型转换,初始化数组时显式指定dtype为浮点类型即可,示例代码:
A = np.array([[-2, 1, -4, -9], [ 1, -3, -2, 3]], dtype=np.float64)
内容的提问来源于stack exchange,提问作者user14554732
相关产品推荐
相关产品推荐

