NumPy 배열에서 이종 데이터 유형 결합
NumPy에서는 다양한 데이터 유형을 포함하는 서로 다른 배열을 결합해야 하는 상황에 직면하는 것이 일반적입니다. 결합. 배열 연결은 간단한 솔루션을 제공하지만 전체 배열이 첫 번째 배열의 데이터 유형으로 변환되어 잠재적인 메모리 비효율성을 초래하는 경우가 많습니다.
이 문제를 해결하려면 다음 접근 방식을 고려하세요.
레코드 배열:
레코드 배열은 메모리 효율성을 저하시키지 않고 단일 배열에 이기종 데이터 유형을 저장할 수 있는 다양한 방법을 제공합니다. 각 열은 해당 데이터 유형이 있는 필드를 나타내는 테이블과 같은 구조를 사용합니다. 예를 들어 문자열 배열(A)과 정수 배열(B)을 결합하려면 다음과 같이 레코드 배열을 생성할 수 있습니다.
<code class="python">records = numpy.rec.fromarrays((A, B), names=('keys', 'data'))</code>
이제 레코드 배열은 두 개의 필드로 구성됩니다. 문자열) 및 데이터(정수). records['keys'] 및 records['data']와 같은 속성 액세스를 사용하여 이러한 필드에 개별적으로 액세스할 수 있습니다.
구조적 배열:
구조적 배열, 레코드 배열과 유사하게 배열에 대한 사용자 정의 데이터 유형을 정의하는 방법을 제공합니다. 속성 액세스를 사용하는 대신 인덱싱을 사용하여 다른 필드에 액세스합니다. 구조화된 배열을 생성하려면:
<code class="python">arr = numpy.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')]))</code>
dtype 인수는 각 튜플이 필드 이름과 데이터 유형을 정의하는 튜플의 튜플을 지정합니다. 결과 배열 arr에는 인덱싱을 통해 액세스할 수 있는 키(문자열) 및 데이터(정수) 필드가 있습니다(예: arr['keys'] 및 arr['data']).
참고:
구조적 배열은 레코드 배열과 같은 속성 액세스를 제공하지 않습니다. 그러나 직접 인덱싱 방식으로 인해 특정 작업에 더 효율적일 수 있습니다. 또한 레코드 배열과 구조적 배열 모두 슬라이싱, 마스킹, 브로드캐스트 등의 작업을 지원하여 데이터 조작에 유연성을 제공합니다.
위 내용은 메모리 효율성을 잃지 않고 NumPy 배열에서 다양한 데이터 유형을 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!