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

Python中numpy.arange指定dtype为int时结果全为0的原因探究

为什么np.arange(0.3, 12.5, 0.6, int)输出全是0?

嘿,这个坑我当初刚学NumPy的时候也踩过!原因其实是你误解了np.arange最后一个参数的作用——它不是用来把生成的浮点型数组转成整数的,而是直接指定整个数组的数据类型,并且在生成序列前就会把起始值、步长都强制转换成这个类型。

咱们拆解一下你写的代码:
当你调用np.arange(0.3, 12.5, 0.6, int)时,NumPy会先做这两步关键操作:

  • 把起始值0.3强制转换为int类型,结果直接变成0;
  • 把步长0.6也强制转换为int类型,结果变成0;

这下问题就一目了然了:你相当于让NumPy生成一个从0开始,每次加0,直到不超过12.5的序列——那可不就是一堆0嘛!

正确的做法

如果你想把生成的浮点序列转换成整数数组,应该先生成原始的浮点数组,再用astype()方法转换类型:

import numpy as np
x = np.arange(0.3, 12.5, 0.6).astype(int)
# 输出会是 [0 0 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12]

或者如果需要四舍五入而不是直接截断小数部分的话,可以用np.round()配合类型转换:

x = np.round(np.arange(0.3, 12.5, 0.6)).astype(int)
# 输出会是 [0 1 2 2 3 3 4 4 5 6 6 7 8 8 9 9 10 11 11 12 12]

这样就能得到你预期的整数数组啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:59:09