해결 방법: 크기 1의 배열만 python 스칼라로 변환할 수 있습니다.


Python을 사용할 때 발생할 수 있는 오류는 다음과 같습니다.

 TypeError : only size-1 arrays can be converted to Python scalars

이 오류는 np.int()를 사용하여 부동 소수점 값의 NumPy 배열을 정수 값의 배열로 변환하려고 할 때 가장 자주 발생합니다.

그러나 이 함수는 값 배열 대신 단일 값만 허용합니다.

대신 x.astype(int)을 사용하여 부동 소수점 값의 NumPy 배열을 정수 값의 배열로 변환해야 합니다. 왜냐하면 이 함수는 배열을 받아들일 수 있기 때문입니다.

다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.

오류를 재현하는 방법

다음과 같은 float 값의 NumPy 배열을 생성한다고 가정합니다.

 import numpy as np

#create NumPy array of float values
x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])

이제 이 부동 소수점 값 배열을 정수 값 배열로 변환하려고 한다고 가정해 보겠습니다.

 #attempt to convert array to integer values
n.p. int (x)

TypeError : only size-1 arrays can be converted to Python scalars 

np.int() 함수는 값 배열이 아닌 단일 값만 허용하기 때문에 TypeError 가 발생합니다.

오류를 수정하는 방법

부동 소수점 값의 NumPy 배열을 정수 값으로 변환하려면 다음 코드를 사용할 수 있습니다.

 #convert array of float values to integer values
x. astype (int)

array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])

값 배열은 정수로 변환되었으며 astype() 함수가 값 배열을 처리할 수 있기 때문에 오류가 발생하지 않습니다.

참고 : astype() 함수에 대한 전체 문서는 여기에서 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

Pandas에서 KeyError를 수정하는 방법
해결 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다