[NumPy] 생성 함수들

넘파이엔 여러가지 형태의 배열 생성함수가 존재한다.

array 함수
여태 잘 써왔던 녀석이다. 리스트를 받아 배열로 만든다.
근데 이건 작은 테스트를 할때나 유용하지, 규모있는 행렬을 만들기엔 부적절하다. image

image


**zeros 함수 **
이건 인자로 길이를 받아서 그 길이의 배열을 만들어놓고, 그 안을 전부 0으로 채운다.

길이늠 1차원이면 그냥 정수로 줘도 되는데, 2차원 이상이면 튜플로 묶어서 줘야한다. image

image 그리고 유의할 점은, 기본타입이 실수란 것이다.

정수 등의 타입을 주고싶다면 두번째 인자로 타입을 넘겨줘야 한다. image

image


ones 함수
값을 전부 1로 초기화하는거 빼면 zeros랑 똑같다.
별거없다. image

image


full 함수
근데 위의 함수들은 한번에 생성하기에 편하긴 하지만, 생성값이 0과 1로만 정해져있다.
내가 원하는 값을 맘대로 넣을 순 없을까?
그걸 위한게 이 full 함수다. 이 함수는 두번째 인자로 설정값을 받는다. image

image


empty 함수
이건... one과 zero처럼 모양을 받아서 배열을 생성하는건 똑같다.
하지만 이건 초기화를 수행하지 않는다. image

image 무작위의 쓰레기값만 들어있는걸 볼 수 있다.

두번째 인자는 당연히 타입 image

image


arrange 함수
이건 특정 범위의 1차원 정수배열을 만든다.
인자가 둘이면 그 둘의 범위, 하나면 0~의 범위다. image

image


linspace 함수
기묘하다. 시작값과 종료값을 받아서 범위를 구성하고, 원소의 개수를 받아서 범위를 해당 개수로 분포하게끔 한다.
선형 공간(linear space)의 약자인듯하다.

linspace(시작, 종료, 개수...)

이러면 0과 100 사이에서 딱 5개로 분포하도록 알아서 잘 나눠준다. image

image 딱 나눠떨어진 모습이고

깔끔하게 나뉘지 않더라도, 어떻게든 잘 만든다. image

image


logspace 함수
이건 뭐랄까... 로그로 분포하게 만든다.

아래 코드는 base를 깔아서 2진 로그로 하고 시작값을 1, 종료값을 7로 설정했다. 1에 2제곱을 7번 가한다는 것이다.
따라서 2^7가 진짜 종료값이 된다... image

image 그리고 개수도 7개로 했으니 2의 증가값들만 배출된다.


geomspace 함수
logspace와 비슷하다.
이것도 일정 증가치대로 증가하는 분포를 가져오는 건 똑같다.
하지만 시작값과 종료값을 꼬지 않고 직접 받으며, 증가치를 그에 따라 자동으로 설정해주는 것이 다르다. image

image

image



참조
https://doorbw.tistory.com/m/171
https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.full.html
https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html#numpy.linspace