다른 데이터 유형을 가진 NumPy 배열 연결
다양한 dtype을 가진 여러 배열의 데이터를 결합하는 단일 NumPy 배열을 만드는 것은 어려울 수 있습니다. 일반적인 접근 방식 중 하나는 concatenate() 함수를 사용하는 것이지만 이로 인해 전체 배열이 문자열과 같은 단일 데이터 유형으로 변환될 수 있습니다. 이는 메모리 사용량 측면에서 비효율적일 수 있습니다.
해결책: 레코드 배열
배열을 결합하는 동안 원래 데이터 유형을 유지하려면 레코드 배열 사용을 고려하세요. 레코드 배열을 사용하면 각각 고유한 데이터 유형을 갖는 명명된 열이 있는 구조화된 배열을 만들 수 있습니다. 이 접근 방식을 사용하면 Python 객체의 속성과 마찬가지로 이름으로 개별 열에 액세스할 수 있습니다.
레코드 배열을 생성하려면 numpy 모듈의 rec.fromarrays() 함수를 사용할 수 있습니다.
<code class="python">import numpy as np a = np.array(['a', 'b', 'c', 'd', 'e']) b = np.arange(5) records = np.rec.fromarrays((a, b), names=('keys', 'data'))</code>
이 코드는 문자열 데이터 유형이 있는 'keys'와 정수 데이터 유형이 있는 'data'라는 두 개의 열이 있는 records라는 레코드 배열을 생성합니다.
구조적 배열
다른 dtype과 배열을 결합하는 또 다른 옵션은 구조화된 배열을 직접 만드는 것입니다. 구조화된 배열은 레코드 배열과 유사하지만 개별 열에 대한 속성 액세스를 제공하지 않습니다.
<code class="python">arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')]))</code>
이 코드는 문자열 데이터 유형이 있는 'keys' 및 'data'라는 두 개의 열이 있는 arr이라는 구조적 배열을 생성합니다. '를 정수 데이터 유형으로 사용합니다.
어떤 접근 방식이 더 낫습니까?
특정 사용 사례에 가장 적합한 접근 방식은 요구 사항에 따라 다릅니다. 특히 이름으로 개별 열에 액세스해야 하는 경우 레코드 배열을 사용하는 것이 더 편리합니다. 속성 액세스가 필요하지 않은 경우 구조화된 배열이 메모리 사용에 더 효율적입니다.
위 내용은 NumPy 배열 연결에서 데이터 유형 보존: 레코드 배열과 구조적 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!