logo

Python의 NumPy 배열

Python 목록은 배열을 대체하지만 대규모 숫자 데이터 세트를 계산하는 데 필요한 성능을 제공하지 못합니다.

이 문제를 해결하기 위해 우리는 NumPy 라이브러리 파이썬의. NumPy는 다음과 같은 배열 객체를 제공합니다. 은다레이 . 이는 표준 Python 시퀀스와 유사하지만 특정 핵심 요소가 다릅니다.



NumPy 배열이란 무엇입니까?

NumPy 배열은 Python의 과학 컴퓨팅의 핵심인 다차원 데이터 구조입니다.

배열의 모든 값은 동일합니다(동일한 데이터 유형).

자동 벡터화 및 방송 기능을 제공합니다.



효율적인 메모리 관리 기능인 ufuncs(범용 함수)를 제공하고 다양한 데이터 유형을 지원하며 인덱싱 및 슬라이싱에 유연합니다.

배열의 차원

NumPy 배열은 여러 차원을 가질 수 있으므로 사용자는 다층 구조에 데이터를 저장할 수 있습니다.

배열의 차원:



이름
0D(0차원) 스칼라 – 단일 요소
1D(1차원) 벡터 - 정수 목록입니다.
2D(2차원) 매트릭스 - 데이터 스프레드시트
3D(3차원) Tensor- 컬러 이미지 저장

배열 객체 생성

NumPy 배열의 객체를 사용하면 Python에서 배열로 작업할 수 있습니다. 배열 객체가 호출됩니다. 은다레이 .

NumPy 라이브러리의 array() 함수는 ndarray를 생성합니다.

파이썬3




파이썬 소수점 이하 2자리까지 출력
import> numpy as np> arr>=> np.array([>1>,>2>,>3>,>4>,>5>,>6>])>

>

>

산출

세상에서 가장 아름다운 미소
[1,2,3,4,5,6]>

List와 Tuple을 사용하여 NumPy 배열을 만들 수도 있습니다.

목록에서 NumPy 배열 만들기

np 별칭을 사용하여 ndarray를 만들 수 있습니다. 목록 array() 메소드를 사용합니다.

li = [1,2,3,4] numpyArr = np.array(li)>

또는

numpyArr = np.array([1,2,3,4])>

목록은 array() 메서드에 전달되어 동일한 요소가 포함된 배열을 반환합니다.

예시 1: 다음 예제에서는 목록에서 배열을 초기화하는 방법을 보여줍니다.

파이썬3




이진 트리 우편 주문 순회

import> numpy as np> > li>=> [>1>,>2>,>3>,>4>]> numpyArr>=> np.array(li)> print>(numpyArr)>

>

>

산출:

[1 2 3 4]>

결과 배열은 목록과 동일해 보이지만 NumPy 개체입니다.

예 2: numpyArr이 NumPy 객체인지 확인하는 예를 들어보겠습니다. 이 예에서는 array() 함수를 사용하여 목록을 NumPy 배열로 변환한 다음 NumPy 개체인지 여부를 확인합니다.

파이썬3




import> numpy as np> > li>=> [>1>,>2>,>3>,>4>]> numpyArr>=> np.array(li)> > print>(>'li ='>, li,>'and type(li) ='>,>type>(li))> print>(>'numpyArr ='>, numpyArr,>'and type(numpyArr) ='>,>type>(numpyArr))>

>

>

산출:

li = [1, 2, 3, 4] and type(li) = numpyArr = [1 2 3 4] and type(numpyArr) =>

보시다시피 li는 목록 객체이고 numpyArr은 NumPy의 배열 객체입니다.

튜플에서 NumPy 배열 만들기

ndarray를 다음에서 만들 수 있습니다. 튜플 비슷한 구문을 사용합니다.

tup = (1,2,3,4) numpyArr = np.array(tup)>

또는

numpyArr = np.array((1,2,3,4))>

다음 예에서는 튜플에서 배열을 만드는 방법을 보여줍니다. 여기서는 array() 함수를 사용하여 튜플을 NumPy 배열로 변환합니다.

파이썬3


추상 수업



import> numpy as np> > tup>=> (>1>,>2>,>3>,>4>)> numpyArr>=> np.array(tup)> > print>(>'tup ='>, tup,>'and type(tup) ='>,>type>(tup))> print>(>'numpyArr ='>, numpyArr,>'and type(numpyArr) ='>,>type>(numpyArr))>

키보드에 f5가 뭐야?
>

>

산출:

tup = (1, 2, 3, 4) and type(tup) = numpyArr = [1 2 3 4] and type(numpyArr) =>

numpyArr 값은 두 변환 중 하나에서 동일하게 유지됩니다.

NumPy 배열과 내장 Python 시퀀스

  • 목록과 달리 배열은 크기가 고정되어 있으므로 배열의 크기를 변경하면 새 배열이 생성되고 원래 배열은 삭제됩니다.
  • 배열의 모든 요소는 동일한 유형입니다.
  • 배열은 표준 Python 시퀀스보다 더 빠르고 효율적이며 구문이 덜 필요합니다.

메모: 다양한 과학 및 수학 Python 기반 패키지는 Numpy를 사용합니다. 내장된 Python 시퀀스로 입력을 받을 수도 있지만 더 빠른 처리를 위해 데이터를 NumPy 배열로 변환할 가능성이 높습니다. 이는 NumPy를 이해해야 할 필요성을 설명합니다.

Numpy 배열이 왜 그렇게 빠른가요?

Numpy 배열은 주로 다음 언어로 작성됩니다. C언어 . C로 작성되면 배열은 인접한 메모리 위치에 저장되므로 액세스하고 조작하기가 더 쉽습니다. 이는 Python 프로그램을 쉽게 작성하여 C 코드의 성능 수준을 얻을 수 있음을 의미합니다.

  1. 동종 데이터: 배열은 동일한 데이터 유형의 요소를 저장하므로 목록보다 더 컴팩트하고 메모리 효율적입니다.
  2. 고정 데이터 유형: 배열은 고정된 데이터 유형을 가지므로 각 요소에 대한 유형 정보를 저장할 필요가 없으므로 메모리 오버헤드가 줄어듭니다.
  3. 연속 메모리: 배열은 인접한 메모리 위치에 요소를 저장하여 조각화를 줄이고 효율적인 액세스를 허용합니다.
숫자 배열

Numpy 배열 메모리 할당

시스템에 NumPy가 설치되어 있지 않은 경우 다음 단계에 따라 설치할 수 있습니다. NumPy를 설치한 후 다음과 같이 프로그램으로 가져올 수 있습니다.

import numpy as np>

메모: 여기서 np는 NumPy에 일반적으로 사용되는 별칭입니다.

Numpy 배열의 데이터 할당

NumPy에서 데이터는 데이터 버퍼, 모양 및 스트라이드로 구성된 잘 정의된 레이아웃에 따라 메모리에 연속적으로 할당됩니다. 이는 효율적인 데이터 액세스, 벡터화된 작업 및 다음과 같은 하위 수준 라이브러리와의 호환성에 필수적입니다. BLAS 그리고 라팩 .

  1. 데이터 버퍼: NumPy의 데이터 버퍼는 차원에 관계없이 배열의 실제 요소를 저장하는 단일 플랫 메모리 블록입니다. 이를 통해 효율적인 요소별 작업과 데이터 액세스가 가능해집니다.
  2. 모양: 배열의 모양은 각 축의 차원을 나타내는 정수의 튜플입니다. 각 정수는 특정 차원에 따른 배열 크기에 해당하며, 이는 각 축을 따라 요소 수를 정의하고 배열을 올바르게 인덱싱하고 재구성하는 데 필수적입니다.
  3. 걷기: 스트라이드는 한 요소에서 다음 요소로 이동할 때 각 차원에서 이동할 바이트 수를 정의하는 정수 튜플입니다. 메모리의 요소 간 간격을 결정하고 각 차원의 한 요소에서 다른 요소로 이동하는 데 필요한 바이트 수를 측정합니다.

2

결론

Python의 NumPy 배열은 매우 유용한 데이터 구조이며 이를 통해 데이터에 대해 다양한 과학적 작업을 수행할 수 있습니다. 이는 매우 메모리 효율적인 데이터 구조이며 다른 Python 시퀀스에 비해 다양한 이점을 제공합니다.

이 튜토리얼에서는 NumPy 배열에 대해 자세히 설명했습니다. 정의, 차원성, 속도가 빠른 이유, 배열에서 데이터 할당이 작동하는 방식을 다루었습니다. 이 튜토리얼을 완료하면 NumPy 배열에 대한 심층적인 지식을 얻게 되며 이를 Python 프로젝트에 구현할 수 있게 됩니다.