Numpy floor float 값을 int로

Nov 23 2020

나는 수레 배열을 가지고 있으며 가장 가까운 정수로 내림하고 싶습니다. 그래서 그것들을 인덱스로 사용할 수 있습니다.

예를 들면 :

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')

바닥재 후에도 여전히 부동입니다. 자동으로 정수로 변환하는 방법이 있습니까?

답변

2 Jocker Nov 23 2020 at 12:01

나는 @DanielF 설명으로 답변을 편집하고 있습니다. "floor는 정수로 변환되지 않고 정수 값의 부동 소수점을 제공하므로 int로 변경하려면 astype이 필요합니다."솔루션을 이해하려면이 코드를 확인하십시오.

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]]
1 vegiv Nov 23 2020 at 12:08

그냥 사용하지 않는 이유 :

np.random.randint(1,10)