>  기사  >  백엔드 개발  >  NumPy 배열 연결에서 데이터 유형 보존: 레코드 배열과 구조적 배열

NumPy 배열 연결에서 데이터 유형 보존: 레코드 배열과 구조적 배열

Patricia Arquette
Patricia Arquette원래의
2024-10-21 18:00:04371검색

Preserving Data Types in NumPy Array Concatenation: Record Arrays vs. Structured Arrays

다른 데이터 유형을 가진 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.