0. 넘파이에서 제공하는 기능
- 빠른 배열 계산과 브로드캐스팅 기능을 제공하는 효율적인 ndarray
브로드 캐스팅: 크기가 다른 배열간의 연산
ndarray: 다차언 배열 - 반복문을 작성할 필요할 필요 없이 전체 데이터 배열을 빠르게 계산하는 표준 수학 함수
- 배열 데이터를 디스크에 쓰거나 읽을 수 있는 도구와 메모리에 적재된 파일을 다루는 도구
- 선형대수, 난수 생성기, 푸리에 변환 기능
선형대수: 벡터 공간, 벡터, 선형 변환, 행렬, 연립 선형 방정식 등을 연구하는 대수학의 한 분야
푸리에 변환: 시간이나 공간에 대한 함수를 시간 또는 공간 주파수 성분으로 분해하는 변환 - C,C++, 포트란으로 작성된 코드를 넘파이와 연결하는 C API
1. 다차원 배열 객체 ndarray
1) ndarray 생성
import numpy as np
arr1 = np.array(data1)
- 생성함수 종류: array, assarray, arange, ones, ones_like, zeros, zeros_like, empty, empty_like, full, full_like, eye, identity,
- numpy.emty가 0으로 초기화된 배열을 반환하리라 가정하는 것은 안전하지 않다. 가비지값을 포합하기도 함
2) ndarray 자료형
arr1.dtype # 데이터 타입을 확인하는 함수
자료형 종류: int8, uint8, int16, uint16, int32, uint32, int64, uint64, float16, float32, float64, float128, complex64, complex128, complex256, bool, object, string_, unicode
타입변환함수: numpy.astype
3) 넘파이 배열의 산술 연산
- 배열은 for문을 작성하지 않고 데이터를 일괄 처리할 수 있어 매우 중요하다(백터화)
- 백터: 크기와 방향을 가짐
- 스칼라: 방향을 갖지않고 크기만 가짐
- 스칼라 인수가 포함된 산술 연산의 경우 배열 내의 모든 원소에 스칼라 인수가 적용
- 브로드캐스팅: 크기가 다른 배열간의 연산
4) 색인과 슬라이싱 기초
- 1차원 배열은 표면적으로 파이썬의 리스트와 유사하게 작동한다.
- 파이썬에 내장된 리스트와 중요한 차이점은 배열 슬라이스가 원본 배열의 뷰라는 점
- 만약 뷰가 아닌 ndarray 슬라이스의 복사본을 얻고 싶다면 arr[5:8].copy()로 명시적으로 배열을 복사해야한다.
5) 불리언 값으로 선택하기
names=np.addray(["Bob", "Joe", "Will", "Bob", "Will", "Joe", "Joe"]
data = np.array[[4,7],[0,2],[-5,6],[0,0],[1,2],[-12,-4],[3,4]]
mask = (names == "Bob") | (names == "Will")
data[mask]
data[~mask]
- names에서 Bob의 인덱스를 data에 대입하여 찾을 수 있다.(배열의 색인으로 사용할 수 있다.)
- ~ 연산자는 변수가 참조하는 불리언 배열을 뒤집고 싶을 때 유용하다.
- 파이썬 예약어인 and와 or은 불리언 배열에서 사용할 수 없다. &와 |를 대신 사용한다.
6) 팬시 색인
- 정수 배열을 사용한 색인
arr = np.zeros((8,4))
for i in range(8):
arr[i] = i
arr[[4,3,0,6]]
arr[[-3,-5,-7]]
- 색인으로 음수를 사용하면 끝에서부터 행을 선택한다.
### 7) 배열 전치와 축 바꾸기
- 배열 전치: 데이터의 모양이 바뀐 뷰를 한환하는 특별한 기능
- T(transpose): 열과 행을 뒤집음
- numpy.dot: 행렬의 내적
- @연산자: 행렬 곱셈을 수행하는 또 다른 방법
- swapaxes: 두 개의 축 번호를 받아서 배열을 뒤바꾼다.
```python
arr = [[0,1,0],[1,2,-2],[6,3,2],[-1,0,-1],[1,0,1]]
arr.T @ arr
arr.swapaxes(0,1)
2. 난수 생성
- numpy.random.standard_normal
- from random import normalvariate 보다 수십 배 이상 빠르다.
'IT > Data Analysis with python' 카테고리의 다른 글
데이터 로딩과 저장, 파일 형식 (1) | 2024.06.02 |
---|---|
판다스 시작하기: 핵심기능 및 기술 통계 계산 (1) | 2024.06.02 |
판다스 시작하기: Series, DataFrame (1) | 2024.06.02 |
넘파이 기본: 배열과 백터연산 02 (0) | 2024.05.17 |
데이터 분석에 파이썬을 사용하는 이유 (0) | 2024.05.17 |