You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向二维Numpy数组赋值浮点行后该行全零的原因咨询

整数类型Numpy数组赋值浮点数后变为全零的原因

核心原因是Numpy数组的数据类型固定且强类型约束:

  • 你创建数组时传入的是整数元素,Numpy会自动推断数组类型为整数型(比如int32或int64,具体取决于运行环境)。
  • 当向整数类型数组赋值浮点数时,Numpy不会自动转换数组类型,而是直接对浮点数执行截断取整操作——也就是直接舍弃小数部分,只保留整数部分。

你的例子里,0.3截断取整后结果为0,所以赋值后整行都变成了0。

验证数组类型

可以通过查看数组的dtype属性确认类型:

>>> import numpy
>>> s = numpy.array([[1,0,0],[1,0,0]])
>>> s.dtype
dtype('int64')  # 部分环境可能显示int32

解决办法

如果需要存储浮点数,有两种可行方式:

  1. 创建数组时显式指定浮点类型:
>>> s = numpy.array([[1,0,0],[1,0,0]], dtype=numpy.float64)
>>> s[1] = numpy.array([.3,.3,.3])
>>> s
array([[1. , 0. , 0. ],
       [0.3, 0.3, 0.3]])
  1. 对已有的整数数组进行类型转换:
>>> s = s.astype(numpy.float64)
>>> s[1] = numpy.array([.3,.3,.3])

内容的提问来源于stack exchange,提问作者Lizhi Guo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:35:15