Python 리스트를 NumPy 배열로 변환하는 방법
따라서 2차원 이상의 리스트를 NumPy 작업에 활용하기 위해서는 NumPy 배열로 변환해야 합니다.
다음은 Python 리스트를 NumPy 배열로 변환하는 두 가지 방법을 소개합니다.
np.array() 함수 사용:
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트를 NumPy 배열로 변환
array = np.array(data)
print(array) # 출력: [[1 2 3] [4 5 6] [7 8 9]]
리스트 comprehension 사용:
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트 comprehension으로 NumPy 배열 생성
array = np.array([row for row in data])
print(array) # 출력: [[1 2 3] [4 5 6] [7 8 9]]
주의 사항:
- 리스트의 모든 원소가 동일한 데이터 타입이어야 합니다.
- 다차원 리스트를 변환하는 경우 원하는 차원 순서를 유지해야 합니다.
- NumPy 배열은 변경 가능한 객체입니다. 즉, 배열의 값을 변경하면 원본 리스트에도 영향을 미칩니다.
참고:
- NumPy 배열을 리스트로 변환하려면
array.tolist()
메서드를 사용할 수 있습니다.
이 외에도 다양한 방법으로 리스트를 NumPy 배열로 변환할 수 있습니다.
예제 코드: 2차원 리스트를 NumPy 배열로 변환
np.array() 함수 사용
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트를 NumPy 배열로 변환
array = np.array(data)
print(array)
print(array.dtype) # 배열 데이터 타입 출력
리스트 comprehension 사용
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트 comprehension으로 NumPy 배열 생성
array = np.array([row for row in data])
print(array)
print(array.dtype) # 배열 데이터 타입 출력
설명:
import numpy as np
: NumPy 라이브러리 임포트data
: 2차원 리스트 정의np.array(data)
:np.array()
함수를 사용하여 리스트를 NumPy 배열로 변환np.array([row for row in data])
: 리스트 comprehension을 사용하여 리스트를 NumPy 배열로 변환print(array)
: 변환된 NumPy 배열 출력print(array.dtype)
: NumPy 배열의 데이터 타입 출력
결과:
[[1 2 3]
[4 5 6]
[7 8 9]]
int64
- 원하는 차원 순서를 유지해야 합니다.
추가 예제:
- 3차원 리스트를 NumPy 배열로 변환하는 경우:
data = [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
array = np.array(data)
print(array)
- 특정 데이터 타입으로 변환하려면
dtype
매개변수를 사용합니다.
array = np.array(data, dtype=float)
print(array.dtype)
Python 리스트를 NumPy 배열로 변환하는 대체 방법
list() 함수 사용:
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트를 NumPy 배열로 변환
array = np.list(data)
print(array)
pd.DataFrame 사용 (pandas 라이브러리 필요):
import pandas as pd
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트를 DataFrame으로 변환
df = pd.DataFrame(data)
# DataFrame을 NumPy 배열로 변환
array = df.to_numpy()
print(array)
직접적인 배열 할당:
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 리스트를 NumPy 배열에 직접 할당
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(array)
중첩 for 루프 사용:
import numpy as np
# 2차원 리스트 선언
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# NumPy 배열 초기화
array = np.empty((len(data), len(data[0])), dtype=data[0][0].dtype)
# 중첩 for 루프를 사용하여 리스트 값을 배열에 할당
for i in range(len(data)):
for j in range(len(data[0])):
array[i, j] = data[i][j]
print(array)
각 방법의 장단점:
방법 | 장점 | 단점 |
---|---|---|
np.array() | 간결하고 명확함 | 리스트의 모든 원소가 동일한 데이터 타입이어야 함 |
리스트 comprehension | 간결하고 유연함 | np.array() 보다 느릴 수 있음 |
list() | 간결하고 NumPy 라이브러리 필요 없음 | 리스트를 NumPy 배열로 변환하지 않고 복사본만 생성 |
pd.DataFrame | 다차원 데이터 처리에 유용 | pandas 라이브러리 필요 |
직접 배열 할당 | 특정 상황에 유용 | 코드가 더 복잡할 수 있음 |
중첩 for 루프 | 모든 NumPy 버전에서 사용 가능 | 느리고 비효율적일 수 있음 |
선택 가이드:
- 간결하고 명확한 방법을 원한다면
np.array()
함수를 사용하는 것이 좋습니다. - 리스트의 원소가 다양한 데이터 타입인 경우 리스트 comprehension을 사용하는 것이 좋습니다.
- NumPy 라이브러리를 사용하지 않고 싶다면
list()
함수를 사용하는 것이 좋습니다. - 다차원 데이터를 처리하는 경우
pd.DataFrame
을 사용하는 것이 좋습니다. - 특정 상황에 맞는 맞춤형 솔루션이 필요한 경우 직접 배열 할당 또는 중첩 for 루프를 사용하는 것이 좋습니다.
- NumPy 배열과 Python 리스트는 서로 다른 데이터 구조입니다. NumPy 배열은 고성능 과학 계산에 최적화된 반면 Python 리스트는 더 다목적적인 용도로 사용됩니다.
- 올바른 방법 선택은 특정 상황과 요구 사항에 따라 달라집니다.
python list numpy