728x90
반응형
Numpy (Numerical Python)
- Numerical Python의 약자로서 산술계산에 특화된 라이브러리
- 다차원 배열을 위한 기능과 선형 대수 연산을 제공
- 반복문을 작성할 필요없이 전체 데이터 배열에 대한 빠른 연산 위한 표준 수학 함수 제공
- 배열 데이터를 디스크에 쓰거나 읽을 수 있는 도구와 메모리에 올려진 파일을 사용
- 선형대수, 난수 발생기, 푸리에 변환이 가능
Numpy 특징
- ndarray(다차원 배열객체)
- numpy에서 제공하는 대규모의 데이터 집합을 담을 수 있는 자료 구조로서 N차원의 배열 객체를 의미
- 빠르고 효율적인 메모리 사용, 유연한 브로드캐스팅 지원
- 디스크로부터 배열 기반의 데이터를 읽거나 쓰기 용이
- C, C++, 포트란 등으로 쓰여진 코드를 통합 가능
- 선형대수 계산, 푸리에 변환, 난수 생성기 등 다양한 기능 포함
ndarray
- 연속된 메모리 블록에 데이터 저장
- 같은 종류의 데이터를 담음
ndarray 객체 생성
- numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
전달인자 | 설명 |
object | 배열을 반환하는 함수 또는 데이터 목록 |
dtype | 배열 요소의 데이터 타입, 명시하지 않은 경우 자료형을 추론 |
copy | 객체의 복사 여부 |
order | 배열의 메모리 저장 구조지정. C (row major), F (column major) |
subok | True이면 배열을 상속받은 클래스일 경우 상속 클래스 형식으로, False 이면 기본 배열 클래스 형식으로 생성 |
ndmin | 결과 배열의 최소 차원(dimensions) 수 |
ndarray 생성 함수
- 자료형을 명시하지 않으면 dypte은 float64로 설정
함수 | 설명 |
array(데이터, dtype=[data type] | 입력데이터(리스트, 튜플, 배열 또는 순차형 데이터)를 ndarray로 변환 dtype이 명시되지 않으면 자료형을 추정하고 입력 데이터는 복사해서 생성 |
arange | 내장 range 함수와 유사하나 리스트 대신 ndarray 반환 세번째 인자는 step size(간격) |
linspace | 주어진 데이터 범위를 일정한 간격으로 분할해서 배열을 만든 후 튜플로 반환 범위 내에서 균등 간격으로 배열을 생성 |
ones | 주어진 dype으로 배열을 생성하고 내용을 모두 1로 초기화 |
zeros | ones와 같지만 내용을 0으로 채움 |
empty | 메모리를 할당하여 새로운 배열을 생성하지만 값을 초기화하지 않음 |
full | 특정 값으로 모두 채워 초기화 |
identity, eye | NxN 크기의 단위 행렬 identity: NxN 정방 행렬만 생성 가능 eye: NxM 행렬 생성 가능. k: 1값의 시작 위치 |
trim | 삼각 행렬을 생성하는 함수 * 삼각 행렬(triangular matrix): 정사각 행렬의 특수한 경우로, 주대각선을 기준으로 대각항의 위쪽이나 아래쪽 항들의 값이 모두 0인 경우를 의미 |
random | 임의의 값으로 배열을 생성 난수 발생 범위는 0이상 1미만 |
_likes | 주어진 어떤 배열과 같은 shape의 배열 생성 zeros_like ones_like full_like |
random 함수
array 함수
np.array(데이터, dtype=[data type])
기존에 있던 데이터(자료형)을 이용하여 새로운 배열 생성
# 리스트를 이용한 배열 생성
arr = np.array([10, 20, 30])
>>
array([10, 20, 30])
arr = np.array([10, 20, 30], dtype=np.float16)
>>
array([10., 20., 30.], dtype=float16)
# 튜플, range함수를 이용한 배열 생성
arr = np.array(((1, 0), (0, 1)), dtype=np.float32)
>>
array([[1., 0.],
[0., 1.]], dtype=float32)
arr = np.array(range(20))
>>
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
import numpy as np
# zeros
np.zeros((5))
>> array([0., 0., 0., 0., 0.])
np.zeros((2, 4), dtype=np.int8)
>>
array([[0, 0, 0, 0],
[0, 0, 0, 0], dtype=int8)
# ones
np.ones((3, 3))
>>
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.])
# full
np.full((4), 5)
>> array ([5, 5, 5, 5])
# empty
np.empty((2,3), dtype=np.float64)
>>
array([[0., 0., 0.],
[0., 0., 0.]])
# identity
np.identity(5, dtype=int)
>>
array([[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]])
# eye
np.eye(5, dtype=int)
>>
array([[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]])
np.eye(5, 10, dtype=int, k=5)
>>
array([[0 0 0 0 0 1 0 0 0 0]
[0 0 0 0 0 0 1 0 0 0]
[0 0 0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 1]])
# ones_like
arr1 = np.array([[1,2,3,1], [2,4,5,6]])
arr2 = np.ones_like(arr1)
arr2
>>
array([[1 1 1 1]
[1 1 1 1]])
# arrange
np.arange(3, 50, 5)
>> array([3, 8, 13, 18, 23, 28, 33, 38, 43, 48])
# linspace
np.linspace(0, 1, 6)
>> array([0. 0.2 0.4 0.6 0.8 1. ])
random 함수
함수 | 설명 |
random | 임의의 값으로 배열을 생성 난수 발생 범위는 0이상 1미만 |
randint | 일정 범위 내에서 정수형 난수를 생성 범위는 반개구간 |
normal | 정규 분포(nomal distribution)를 고려한 난수 배열 생성 normal(평균, 표준편차, 모양) |
numpy 자료형
종류 | Type Code | 설명 |
int8, uint8 | i1, u1 | 8비트 정수형 |
int16, uint16 | i2, u2 | 16비트 정수형 |
int32, uint32 | i4, u4 | 32비트 정수형 |
int64, uint64 | i8, u8 | 64비트 정수형 |
float16 | f2 | 반정밀도 부동소수점 |
float32 | f4 | 단정밀도 부동소수점 |
float64 | f8 | 배정밀도 부동소수점 |
string_ | s | 고정 길이 문자열 |
ndarray 속성
- size: 배열에 있는 원소의 전체 개수
- ndim: 배열의 차원의 개수
- shape 배열의 각 차원의 크기, 튜플 형태로 반환
- dtype: 배열의 타입 정보
- base: 현재 배열이 원본인지 아니면 원본에 대한 뷰인지를 확인 가능한 속성
- 원본인 경우에는 None
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
arr
>> array([1, 2, 3, 4, 5, 6, 7, 8])
>> 8
arr.ndim
>> 1
arr.shape
>> (8,)
arr2 = np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
arr2
>> array([[1,2,3,4,5,6],
[7,8,9,10,11,12]])
arr2.size
>> 12
arr2.ndim
>> 2
arr2.shape
>> (2, 6)
astype()
- dtype을 명시적으로 변환
impoty numpy as np
arr = np.array([10, 20, 30, 40])
arr
arr.dtype
>>
array([10, 20, 30, 40])
dtype('int32')
float_arr = arr.astype(np.float64)
float_arr
float_arr.dtype
>>
array([10., 20., 30., 40.])
dtype('float64')
References
728x90
반응형
'Python > Numpy' 카테고리의 다른 글
[Numpy] Numpy Functions (1) | 2021.03.05 |
---|---|
[Numpy] Numpy Shape Manipulation (0) | 2021.03.05 |
[Numpy] Numpy Vectorization & Broadcasting (0) | 2021.03.05 |