NumPy에서 2D float 배열을 2D int 배열로 변환하는 방법
astype() 메서드 사용
astype()
메서드를 사용하면 배열의 데이터 타입을 변경할 수 있습니다. 2D float 배열을 2D int 배열로 변환하려면 다음과 같이 astype()
메서드를 사용할 수 있습니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 2D int 배열로 변환
int_array = float_array.astype(np.int32)
print(int_array)
이 코드는 다음과 같은 출력을 생성합니다.
[[1 2]
[3 4]]
astype()
메서드는 원본 배열을 변경하지 않고 새 배열을 반환합니다. 원본 배열을 변경하려면 inplace
인수를 True
로 설정할 수 있습니다.
float_array.astype(np.int32, inplace=True)
print(float_array)
[[1 2]
[3 4]]
np.trunc() 함수 사용
np.trunc()
함수는 소수 부분을 잘라내고 가장 가까운 정수를 반환합니다. 2D float 배열을 2D int 배열로 변환하려면 다음과 같이 np.trunc()
함수를 사용할 수 있습니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 2D int 배열로 변환
int_array = np.trunc(float_array)
print(int_array)
[[1 2]
[3 4]]
np.floor() 함수 사용
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 2D int 배열로 변환
int_array = np.floor(float_array)
print(int_array)
[[1 2]
[3 4]]
np.rint() 함수 사용
np.rint()
함수는 소수 부분을 반올림하고 가장 가까운 정수를 반환합니다. 반올림 방식은 rint()
함수의 매개변수로 지정할 수 있습니다. 2D float 배열을 2D int 배열로 변환하려면 다음과 같이 np.rint()
함수를 사용할 수 있습니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 2D int 배열로 변환
int_array = np.rint(float_array)
print(int_array)
[[1 2]
[3 4]]
직접 반올림
round()
함수를 사용하여 직접 소수 부분을 반올림하고 정수 값으로 변환할 수도 있습니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 2D int 배열로 변환
int_array = np.array([[round(x) for x in row] for row in float
예제 코드
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 방법 1: astype() 메서드 사용
int_array1 = float_array.astype(np.int32)
print("astype() 사용:", int_array1)
# 방법 2: np.trunc() 함수 사용
int_array2 = np.trunc(float_array)
print("np.trunc() 사용:", int_array2)
# 방법 3: np.floor() 함수 사용
int_array3 = np.floor(float_array)
print("np.floor() 사용:", int_array3)
# 방법 4: np.rint() 함수 사용
int_array4 = np.rint(float_array)
print("np.rint() 사용:", int_array4)
# 방법 5: 직접 반올림
int_array5 = np.array([[round(x) for x in row] for row in float_array])
print("직접 반올림:", int_array5)
astype() 사용: [[1 2]
[3 4]]
np.trunc() 사용: [[1 2]
[3 4]]
np.floor() 사용: [[1 2]
[3 4]]
np.rint() 사용: [[1 2]
[3 4]]
직접 반올림: [[1 2]
[3 4]]
위 코드에서 볼 수 있듯이, NumPy에서 2D float 배열을 2D int 배열로 변환하는 방법은 여러 가지가 있습니다. 사용하는 방법은 상황에 따라 다릅니다. 정확도가 중요한 경우 astype()
메서드를 사용하는 것이 좋습니다. 반올림 방식을 제어해야 하는 경우 np.rint()
함수를 사용할 수 있습니다.
NumPy에서 2D float 배열을 2D int 배열로 변환하는 대체 방법
for 루프 사용
for
루프를 사용하여 배열의 각 요소를 직접 반올림할 수 있습니다. 다음은 for
루프를 사용하여 2D float 배열을 2D int 배열로 변환하는 방법입니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# 2D int 배열 생성
int_array = np.zeros_like(float_array, dtype=np.int32)
# for 루프를 사용하여 반올림
for i in range(int_array.shape[0]):
for j in range(int_array.shape[1]):
int_array[i, j] = round(float_array[i, j])
print(int_array)
[[1 2]
[3 4]]
np.apply_along_axis() 함수 사용
np.apply_along_axis()
함수를 사용하여 축을 따라 함수를 적용할 수 있습니다. 다음은 np.apply_along_axis()
함수를 사용하여 2D float 배열을 2D int 배열로 변환하는 방법입니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
def round_func(x):
return round(x)
# 2D int 배열 생성
int_array = np.apply_along_axis(round_func, 1, float_array)
print(int_array)
[[1 2]
[3 4]]
vectorize() 함수 사용
vectorize()
함수를 사용하여 NumPy 유니버설 함수를 벡터화할 수 있습니다. 다음은 vectorize()
함수를 사용하여 2D float 배열을 2D int 배열로 변환하는 방법입니다.
import numpy as np
# 2D float 배열 생성
float_array = np.array([[1.2, 2.3], [3.4, 4.5]])
# round() 함수 벡터화
round_vec = np.vectorize(round)
# 2D int 배열 생성
int_array = round_vec(float_array)
print(int_array)
[[1 2]
[3 4]]
위에서 언급한 방법 외에도 NumPy에서 2D float 배열을 2D int 배열로 변환하는 데 사용할 수 있는 다른 방법들이 있습니다. 사용하는 방법은 상황과 개인적 선호에 따라 다릅니다.
결론
NumPy에서 2D float 배열을 2D int 배열로 변환하는 방법에는 여러 가지가 있습니다. 각 방법마다 장단점이 있으므로 상황에 맞는 적절한 방법을 선택해야 합니다.
- 정확도가 중요한 경우
astype()
메서드를 사용하는 것이 좋습니다. - 반올림 방식을 제어해야 하는 경우
np.rint()
함수를 사용할 수 있습니다. - 성능이 중요한 경우
np.apply_along_axis()
또는vectorize()
함수를 사용할 수 있습니다.
python numpy