저번 포스팅에 이어 이번에는 쉽게 ndarray를 생성하는 템플릿 같은 함수에 대해 알아보겠습니다.
연속된 숫자의 ndarray를 원한다면? -> arange
파이썬에는 range라는 함수가 있습니다.
이 함수는 반복문에서 아주 자주 쓰이는 함수로 연속된 숫자를 생성하는 기능을 합니다.
예시를 보자면
print(list(range(10)))
이렇게 작성을 해서 실행해보면
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
이렇게 반환이 됩니다.
arange함수도 range와 거의 똑같은 기능을 하는데 차이점으로는 arange는 ndarray를 생성합니다.
arange는 넘파이 함수이니 앞에 np를 붙이는 식으로 작동하는데
이것도 예시를 보자면
import numpy as np
array1 = np.arange(10)
print(array1)
이 코드를 실행하면 위에 있는 range함수의 예시와 똑같은 값이 나오게 됩니다.
또한 숫자의 간격도 지정해줄 수 있는데 arange(a, b, c)로 가정한다면
a부터 b - 1의 숫자까지 c의 간격으로 출력하게됩니다.
array1 = np.arange(1, 10, 2)
print(array1)
[1 3 5 7 9]
위의 예시처럼 1부터 10보다 1작은 수, 즉 9까지 2씩 띄워져서 출력이 됩니다.
중요!! 파이썬은 숫자를 0부터 세기 때문에 위의 예시처럼 arange(10)을 하게 되면 1~10까지가 아닌 0~9까지 나오게 됩니다. 나중에 포스팅할 인덱싱에서도 이 법칙이 적용되므로 꼭 기억하시기 바랍니다!!
이번에는 0과 1만으로 구성이 된 ndarray를 생성하는 함수 두가지에 대해 알아보겠습니다.
[0,0,0,0,0,0,0,0,0,0,0,0] -> zeros ⭕
zeros( )도 위의 arange( )와 마찬가지로 np.zeros라는 형태로 쓰여져 0으로만 되어있는 ndarray를 생성합니다. 거기다 shape까지 지정해줄 수 있어서 여러 차원의 데이터로도
생성할 수 있어 자주 사용이 되는 함수입니다.
array0 = np.zeros((2, 2, 2))
print(array0)
output
[[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]]
이처럼 2 x 2 x 2 형태의 ndarray를 생성했습니다.
이때 데이터 타입도 'dtype='이라고 뒤에 추가적으로 적어 원하는 종류의 데이터 타입으로 설정할 수도 있습니다. 디폴트 값은 위 아웃풋을 보시면 아시겠지만 float64로 지정이 됐습니다.
[1, 1, 1, 1, 1, 1, 1, 1] -> ones
ones 또한 zeros와 마찬가지로 1로만 구성이 되어있는 ndarray를 생성합니다.
array1 = np.ones((2, 2, 2))
print(array1)
output
[[[1., 1.],
[1., 1.]],
[[1., 1.]
[1., 1.]]]
[?, ?, ?, ?, ?, ?, ?] -> empty
이것도 설명을 할까 말까 하다가 그냥 하게 되었습니다.
<파이썬 머신러닝 완벽가이드>에는 없지만 그냥 이런 것도 있구나 하시면서 보면 됩니다.
분명 이름은 empty인데 사실 빈 ndarray가 아니라 무작위 값이 나오게 됩니다.
위에서 설명한 zeros나 ones는 메모리를 초기화해서 0이나 1로 반환을 하는 방식인데 empty는 초기화를 하지 않고 그대로 반환을 해서 매번 실행할 때 마다 다른 값이 나오게 됩니다.
array_empty = np.empty((2, 2))
print(array_empty)
output
[[5.e-324, 4.e-323],
[2.e-323, 2.e-323]]
이렇게 이상한 값이 나와서 실제로는 잘 사용하지 않는 함수입니다.
[?, ?, ?, ?, ?, ?, ?] -> random.rand( )
이번에는 empty와는 또다른 무작위 ndarray 생성 함수를 소개하겠습니다.
이름 그대로 random이라 완전히 무작위로 생성을 하지만 수치의 범위는 항상
0이상 1 미만으로 고정이 되어 있습니다.
np.random.rand( )의 형식으로 사용할 수 있는데 괄호 안에는 ndarray의 shape를
지정해주시면 됩니다.
array_empty = np.random.rand(2, 2)
print(array_empty)
output
[[0.00141862 0.5446064 ]
[0.75099374 0.40576041]]
이렇게 0이상 1미만의 숫자로만 이루어져 있는 ndarray를 생성할 수 있습니다.
random.rand( )같은 함수를 난수 생성 함수라고도 부르는데 이것 말고도 여러가지가
있어서 나중에 따로 난수 생성 함수의 종류에 대해서 설명해보겠습니다.