2022년 9월 15일 목요일

Numpy Array 생성 (zeros, ones)

 

Numpy Array 생성 (zeros,ones,…)

NumPy 라이브러리는 함수에 따라 다른 값으로 생성된 초기 콘텐츠로 ndarray를 생성하는 함수들을 제공합니다. Numpy를 사용하다보면 이러한 기능이 매우 유용하다는 느낄수 있습니다. 단지, 한 줄의 코드로 많은 양의 데이터를 생성할 수 있습니다.

zeros, ones

예를 들어 zeros() 함수는 모양 인수로 정의된 차원을 가진 0의 전체 배열을 만들고, 2차원 배열 3x3을 생성하려면, 아래과 같이 사용합니다.

>>> np.zeros((3, 3))
array([[ 0., 0., 0.],
 [ 0., 0., 0.],
 [ 0., 0., 0.]])

비슷하게 ones() function은 유사하게 전부 1로 채워진 배열을 생성합니다

>>> np.ones((3, 3))
array([[ 1., 1., 1.],
 [ 1., 1., 1.],
 [ 1., 1., 1.]])

기본적으로 두 함수는 float64 datatype으로 배열을 생성합니다.

arange

여기에 유용한 기능은 arange()입니다. 함수형태도 기본함수인 range와 비슷하게 생겼습니다 이 함수는 전달된 파라미터에 따라 특정 규칙에 응답하는 숫자 시퀀스로 NumPy 배열을 생성합니다. 예를 들어, 0과 10 사이의 값 시퀀스를 생성하려는 경우 함수에 하나의 인수만 전달됩니다.

>>> np.arange(0, 10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> np.arange(4, 10) # 4부터 10까지 생성
array([4, 5, 6, 7, 8, 9])

>>> np.arange(0, 12, 3) # 0부터 12까지 step 3으로 생성
array([0, 3, 6, 9])

>>> np.arange(0, 6, 0.6) # 0 부터 6까지 step 0.6 (float)으로 생성
array([ 0. , 0.6, 1.2, 1.8, 2.4, 3. , 3.6, 4.2, 4.8, 5.4])

지금까지 1차원 배열만 만들었습니다. 2차원 배열을 생성하려면 arange() 함수를 계속 사용할 수 있지만 reshape() 함수와 결합됩니다. 이 함수는 모양 인수로 지정된 방식으로 선형 배열을 여러 부분으로 나눕니다.

>>> np.arange(0, 12).reshape(3, 4)  # (row, colum)
array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])

linespace

range()와 매우 유사한 또 다른 함수는 linspace()입니다. 이 함수는 여전히 첫 번째 두 인수로 시퀀스의 초기 값과 끝 값을 취하지만 세 번째 인수는 한 요소와 다음 요소 사이의 거리를 지정하는 대신 간격을 분할하려는 요소의 수를 정의합니다.

>>> np.linspace(0,10,5) # 0 부터 10까지 5개 포인트를 생성
array([ 0. , 2.5, 5. , 7.5, 10. ])

random

마지막으로, 이미 값을 포함하는 배열을 얻는 또 다른 방법은 배열을 random값으로 생성하는 것입니다. 이것은 numpy.random 모듈의 random() 함수를 사용하여 가능합니다. 이 함수는 인수에 지정된 대로 많은 요소가 있는 배열을 생성합니다. 이 값들은 실행 때마다 다르게 나옵니다. . N-차원 배열을 만들려면 배열의 크기를 인자로 전달하면 됩니다.

>>> np.random.random(3)
array([ 0.78610272, 0.90630642, 0.80007102])

>>> np.random.random((3,3))  # 3x3 으로 random값 생성
array([[ 0.07878569, 0.7176506 , 0.05662501],
 [ 0.82919021, 0.80349121, 0.30254079],
 [ 0.93347404, 0.65868278, 0.37379618]])


댓글 없음:

댓글 쓰기