HOWTO · NumPy
Pandas 시리즈를 NumPy 배열로 변환
Python에서 pandas Series의 값을 NumPy 배열로 변환하려면 `Series.to_numpy()`를 사용하세요. 인덱스 레이블은 배열에 포함되지 않으므로 별도로 다루세요.
이 페이지의 내용
pandas Series에는 값과 레이블 인덱스가 함께 저장됩니다. 값으로 NumPy 배열을 얻으려면 Series 자체에 Series.to_numpy()를 호출하세요. 레이블은 결과에 포함되지 않으므로 다음 단계에서 필요하다면 인덱스를 별도로 유지하거나 변환해야 합니다.
Series.to_numpy()로 pandas Series를 NumPy 배열로 변환하기
NumPy ndarray가 필요할 때는 Series.to_numpy()를 사용하는 것이 가장 직접적입니다. 이 예제는 숫자 값 두 개와 레이블이 있는 Series를 만든 다음, Series의 값을 변환하고 결과 배열과 dtype을 확인합니다. 값은 [82 91]로 표시되고 배열의 dtype은 int64입니다.
다음 예제를 실행하세요.
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
import pandas as pd
scores = pd.Series([82, 91], index=["Mia", "Noah"], name="score")
values = scores.to_numpy()
print(values)
print(values.dtype)
[82 91]
int64
배열에는 Series의 값이 원래 순서대로 담깁니다. "Mia"와 "Noah"는 포함되지 않으며, 레이블은 scores.index에 남아 있습니다. NumPy 연산에 값을 전달하면 위치에 따른 순서가 사용되고 pandas 레이블은 함께 전달되지 않으므로 이 차이를 알아 두세요.
pandas의 확장 배열이 필요할 때는 Series.array 사용하기
다음 연산에서 pandas의 배열 표현을 사용해야 한다면 Series.array를 선택하세요. Series 데이터에 따라 그 표현은 NumPy ndarray가 아니라 확장 배열일 수 있습니다. 확장 배열은 일반적인 NumPy dtype에 직접 대응하지 않는 데이터형에 대해 pandas 고유의 값 동작을 보존합니다. 받는 API가 ndarray를 명시적으로 요구한다면 Series.to_numpy()를 사용하세요.
예를 들어 scores.array는 Series의 배열 표현에 접근하고, scores.to_numpy()는 NumPy 표현을 요청합니다. 두 방법은 서로 다른 용도에 맞으므로 Series.array의 결과가 ndarray라고 가정하지 마세요. ndarray를 요구하는 API에 전달하기 전에는 해당 API의 요구사항을 확인하세요.
호환 가능한 대안으로 Series.values 또는 numpy.asarray() 사용하기
Series.values는 Series 값을 배열과 유사한 객체로 얻는 간결한 대안입니다. 정확한 결과는 Series의 dtype에 따라 달라질 수 있으므로, 명시적인 변환 메서드와 NumPy ndarray 결과를 원한다면 Series.to_numpy()를 사용하세요. numpy.asarray(scores)도 Series에서 배열을 얻는 호환 가능한 방법이며, 배열과 유사한 입력을 받는 기존 NumPy 코드와 함께 쓸 때 유용합니다.
이 방법들은 Series의 값에 관한 것이며 레이블에 관한 것이 아닙니다. 결과를 사용하는 코드의 요구사항에 따라 선택하세요. 명확한 ndarray 변환에는 Series.to_numpy(), pandas 배열 표현에는 Series.array, 주변 코드에 적합한 호환 방식에는 Series.values 또는 numpy.asarray()를 사용할 수 있습니다. 어느 방법도 인덱스를 값 배열에 포함하지 않습니다.
배열 결과를 확인하고 인덱스와 dtype을 따로 처리하기
dtype이 이후 계산이나 저장에 영향을 준다면 변환 결과를 확인하세요. 숫자 Series는 일반적으로 숫자 NumPy dtype을 만들지만, pandas 고유 표현을 사용하는 데이터나 여러 종류의 값이 섞인 데이터는 다른 NumPy 표현이 필요할 수 있습니다. 모든 Series가 같은 종류의 배열로 변환된다고 가정하지 말고 values.dtype으로 실제 결과를 확인하세요. 제공된 근거에는 Series에 관한 버전별 지침이 없으므로 여기서는 선택적 dtype 또는 copy 제어를 다루지 않습니다.
레이블도 필요하다면 scores.index에 별도로 접근하고 프로그램에서 레이블과 값의 관계를 명확히 유지하세요. 값만 변환하면 이후 NumPy 연산에는 레이블 기반 정렬이 적용되지 않습니다. 수치 처리에서는 대개 의도한 동작이지만, 여러 Series의 값을 결합할 때는 먼저 값의 순서가 서로 일치하는지 확인하세요. Series를 배열로 변환해도 레이블을 기준으로 두 Series를 자동 정렬하지 않습니다.