python - Numpy floor float 值转换为 int
问题描述
我有浮点数组,我想将它们设为最接近的整数,所以我可以将它们用作索引。
例如:
In [2]: import numpy as np
In [3]: arr = np.random.rand(1, 10) * 10
In [4]: arr
Out[4]:
array([[4.97896461, 0.21473121, 0.13323678, 3.40534157, 5.08995577,
6.7924586 , 1.82584208, 6.73890807, 2.45590354, 9.85600841]])
In [5]: arr = np.floor(arr)
In [6]: arr
Out[6]: array([[4., 0., 0., 3., 5., 6., 1., 6., 2., 9.]])
In [7]: arr.dtype
Out[7]: dtype('float64')
地板后它们仍然是浮点数,有没有办法自动将它们转换为整数?
解决方案
我用@DanielF 解释编辑答案:“floor 不会转换为整数,它只是给出整数值的浮点数,所以你仍然需要一个 astype 来更改为 int”检查此代码以了解解决方案:
import numpy as np
arr = np.random.rand(1, 10) * 10
print(arr)
arr = np.floor(arr).astype(int)
print(arr)
OUTPUT:
[[2.76753828 8.84095843 2.5537759 5.65017407 7.77493733 6.47403036
7.72582766 5.03525625 9.75819442 9.10578944]]
[[2 8 2 5 7 6 7 5 9 9]]
推荐阅读
- jasper-reports - 如何修复 java.lang.ClassCastException:java.lang.Double 无法转换为变量表达式的 java.math.BigDecimal 错误?
- python - 从外部函数将项目写入 tkinter 列表框
- php - 仅使用 SSL 服务器证书连接到 MySQL
- php - 使用 AWS PHP 开发工具包时 AWS Assume Role 访问被拒绝
- java - JavaFX 更新进度条并等待线程完成
- mysql - 如果两个mysql查询不能在一个prepared statement中执行,我应该担心SQL注入吗?
- azure-cosmosdb - 我们可以在没有任何密钥的情况下将 Active Directory 与 cosmosdb 集成吗
- html - 根据组件更改侧边菜单列表项
- javascript - 如何在 Vue.js 中获取元素高度
- tsql - TSQL 查询适用于一个数据库,但在 sp_msforeachdb 过程下运行时,语法不正确但语法正确