앞 게시글에서는 넘파이의 기본과 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로 변환됨을 보장한다.

 

+ Recent posts