앞 게시글에서는 넘파이의 기본과 np.array() 를 통해 생성하는 것을 학습하였다.
이번 게시글에서는 ndarray에서 지원하는 다양한 함수를 볼 것이다.
ndarray를 생성하는 numpy 함수들 사용할 때는 np.함수명으로 사용하다.
자료형이 명시 되지 않는 경우,
- 많은 numpy tutorial에서는 보통 float64가 될 것이라 하지만,
- numpy 구현체의 버전에 따라 일치하지 않는데,
- numpy 최신버전에서는 제시된 자료형을 담을 수 있는 최소 size의 자료형으로 정해진다고 document에서는 명시한다.
함수설명
array | 입력 데이터를 ndarray로 변환. dtype 미 지정시, 자료형에서 추론 |
asarray | 입력 데이터를 ndarray로 변환. 입력 데이터가 ndarray일 경우 그대로 표시 |
arange | 내장range 함수와 유사하지만 리스트 대신 ndarray를 반환 |
ones | 주어진 dtype과 shape을 가지는 배열 생성. 성분을 모두 1로 초기화 |
ones_like | 주어진 배열과 동일한 shape과 dtype을 갖는 배열을 생성. 1로 초기화 |
zero | ones와 같지만 0으로 채운다 |
zeros_like | ones_like와 같지만 0dmfh codnsek |
empty | 메모리를 할당하지만 초기화가 없음 |
empty_like | 메모리를 할당하지만 초기화가 없음 |
eye(N,M,k=0) | 1, 0의 값을 갖는 대각 NxM 대각 행렬 생성. k에 따라 대각이 이동 |
identity | n x n 단위행렬 생성 |
linspace | start, stop, size를 설정하면 ndarray로 생성 |
1. arange() : 파이썬의 표준 함수인 range() 와 유사한 기능으로 array를 range()로 표현하는 것
sequence_array = np.arage(10)
pirnt(sequence_array)
- 파이썬처럼 0부터 n-1까지의 숫자를 넣어주기 때문에 출력값은 [ 0 1 2 3 4 5 6 7 8 9] 으로 나오게 된다.
- 기본 함수는 arange([start,] stop[, step,], dtype=None) 로 default 값이 stop이기 때문에 stop = 10이 되어 자동으로 0부터 시작하게 된다.
2. zeros() : 함수 인자로 튜플 형태의 shape 값을 입력하면 모든 값을 0으로 채운 해당 shape를 가진 ndarray를 반환함
zero_array = np.zeros((3,2), dtype='int32')
print(zero_array)
print(zero_array.dtype)
- [[ 0 0 ] [ 0 0 ] [ 0 0 ]] -> 0으로 채워진 (3,2) ndarray 반환
- int32 -> np.zeros() 함수를 통해 dtype 으로 설정한 값으로 나오게 됨
3. ones() : 함수 이자로 튜플 형태의 shape 값을 입력하면 모든 값을 1로 채운 해당 shape를 가진 ndarray를 반환함
one_array = np.ones((3,2))
print(one_array)
print(one_array.dtype)
- [[ 1 1 ] [ 1 1 ] [ 1 1 ]] -> 1으로 채워진 (3,2) ndarray 반환
- float64 -> 디폴트 값인 float64 가 나오게 됨
4. reshape() : ndarray의 차원과 크기를 변경하는 함수, 변환을 원하는 크기를 함수 인자로 부여
array1 = np.arange(10) # [ 0 1 2 3 4 5 6 7 8 9]
array2 = array1.reshape(2,5) # [[0 1 2 3 4 ][5 6 7 8 9 ]]
array3 = array1.reshape(5,2) # [[0 1] [2 3] [4 5] [6 7] [8 9]]
- 여기서 지정된 사이즈로 변경이 가능하지만, (4,3) 처럼 맞지 않은 사이즈를 입력 시 오류를 발생시킴
* 인덱스에 있어서 -1 인 경우 ndarray와 호환되는 새로운 shape로 반환해줌
array1 = np.arange(10) # [ 0 1 2 3 4 5 6 7 8 9]
array2 = array1.reshape(-1,5) # [[0 1 2 3 4 ][5 6 7 8 9 ]]
array3 = array1.reshape(5,-1) # [[0 1] [2 3] [4 5] [6 7] [8 9]]
- -1 은 원본 ndarray가 어떤 차원의 형태이든 간에 결과는 2차원으로 나오게 되며, 여러개의 로우를 가지되 반드시 1개의 컬럼을 가진 ndarray로 변환됨을 보장한다.
'머신러닝 in Python' 카테고리의 다른 글
판다스(Pandas) 데이터프레임 활용 (0) | 2019.08.08 |
---|---|
판다스(Pandas) 기초 + 타이타닉 데이터 (0) | 2019.08.08 |
넘파이(NumPy) 정렬 (0) | 2019.08.07 |
넘파이(NumPy) 인덱싱(indexing) (0) | 2019.08.07 |
넘파이(NumPy) 기초 + np.array() (0) | 2019.08.07 |