Numpy 下限浮点值转为 int

Too*_*ery 13 python math numpy floor

我有浮点数数组,我想将它们取整为最接近的整数,这样我就可以将它们用作索引。

例如:

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')
Run Code Online (Sandbox Code Playgroud)

地板后它们仍然是浮点数,有没有办法自动将它们转换为整数?

Joc*_*ker 15

我正在编辑 @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)
Run Code Online (Sandbox Code Playgroud)
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]]
Run Code Online (Sandbox Code Playgroud)

  • 尝试给出一些解释,而不仅仅是代码。即使只是从“floor”开始,也不会转换为整数,它只是提供整数值的“float”,因此您仍然需要一个“astype”来更改为“int””,这将使审核队列远离您。 (2认同)