본문 바로가기
Data·AI/Numpy

numpy함수(생성)

by hyun-am 2020. 7. 30.

생성함수

 

array 생성하기

 

다음은 numpy에서 array함수를 이용해서 배열을 만들겠습니다.

1차원 배열과 2차원 배열은 다음과 같이 생성할 수 있습니다.

lst_1d = np.array([1,2,3,4])
print(lst_1d)
# 출력 값
# [1 2 3 4]
lst_2d = np.array([[1,2,3],[4,5,6]])
print(lst_2d)
# 출력 값 
# [[1 2 3]
#  [4 5 6]]

 

배열의 모양을 확인하는 shape함수

 

다음은 numpy 배열을 확인하는 shape 함수입니다. 사용은 다음과 같이합니다.

print(lst_1d.shape)
print(lst_2d.shape)
# 출력 값
# (4,)
# (2, 3)

 

파이썬에는 range Numpy에는 arange

 

다음은 파이썬에서 range로 list를 생성하듯 numpy에서 arange를 이용해서 배열을 생성하겠습니다.

 

arange()사이에 숫자를 하나만 입력하면 0부터 N미만의 값들을 리스트로 만들어 줍니다.

lst = np.arange(10)
print(lst)
# 출력 값
# [0 1 2 3 4 5 6 7 8 9]

다음은 두개의 숫자를 입력하겠습니다. arange(N,M)이라고 하면 N이상 M미만의 값들을 리스트로 만들어 줍니다.

lst2 = np.arange(10,20)
print(lst2)
# 출력 값
# [10 11 12 13 14 15 16 17 18 19]

마지막으로 세개의 숫자를 입력하겠습니다. arange(x,y,z)이라고 하면 x이상 y미만인데 step을 z값으로 지정해줍니다. 예시는 다음과 같습니다.

lst3 = np.arnage(0,11,2)
print(lst3)
# 출력 값
# [0 2 4 6 8 10]

 

0이나 1로 array를 만들어 주는 np.ones(), np.zeros()

 

shape(4,5)이고 0으로 가득찬 배열을 만들려면 다음과 같이 입력합니다.

lst = np.zeros((4,5))
print(lst)
# 출력 값
# [[0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0.]]

마찬가지로 shape(2,3,4)이고 1로 가득찬 배열을 만들려면 다음과 같이 입력합니다.

lst2 = np.ones((2,3,4))
print(lst2)
# 출력 값
# [[[1. 1. 1. 1.]
#   [1. 1. 1. 1.]
#   [1. 1. 1. 1.]]

#  [[1. 1. 1. 1.]
#   [1. 1. 1. 1.]
#   [1. 1. 1. 1.]]]

 

np.empty( )와 np.full( )

다음은 empty()와 full()입니다. 먼저 empty는 초기화 되지 않은 값들로 배열을 만들어주는데 메모리를 지정해 주지 않아서 쓰레기 값이 출력될 수도 있습니다.

shape(2,4)이고 empty인 array를 만드려고 하면 다음과 같이 입력합니다.

lst = np.empty((2,4))
print(lst)
# 출력 값
# [[ 30.2   24.2  365.    24.2 ]
#  [ 30.2  241.64 365.   241.64]]

다음은 full입니다. 정해진 숫자로 가득 채울때 사용합니다.

예를 들면 shape(1,4,5)인 배열을 100이라는 숫자로 가득 채우려면 다음과 같이 입력할 수 있습니다.

lst2 = np.full((2,4,5),100)
print(lst2)
# 출력 값
# [[[100 100 100 100 100]
#   [100 100 100 100 100]
#   [100 100 100 100 100]
#   [100 100 100 100 100]]

#  [[100 100 100 100 100]
#   [100 100 100 100 100]
#   [100 100 100 100 100]
#   [100 100 100 100 100]]]

 

단위 행열을 만들어주는 np.eye( )

다음은 단위 행열을 만들어주는 eye(N)입니다. N*N의 단위 행열을 만들어줍니다.

예를 들면 4*4의 단위 행열을 만들고 싶으면 다음과 같은 코드를 입력하면됩니다.

 

eye_lst = np.eye(4)
print(eye_lst)
# 출력 값
# [[1. 0. 0. 0.]
#  [0. 1. 0. 0.]
#  [0. 0. 1. 0.]
#  [0. 0. 0. 1.]]

 

등 간격의 행열을 만들어 주는 linspace( )

다음은 같은 간격의 행열을 만들어주는 linspace( )입니다.

안에 들어갈 것은linspace(start,end,step,dtype=자료형)이고 자료형은 생략할 수 있습니다.

만약 0부터 15까지 동일한 간격으로 5개의 값을 가지는 행열을 만들기 위한 코드는 다음과 같습니다.

x_lst = np.linspace(0,15,5)
print(x_lst)
# 출력 값
[ 0.    3.75  7.5  11.25 15.  ]

 

array의 형태, 차원을 바꿔주는 reshape()

다음은 행열의 형태 및 차원을 바꿔주는 reshape()함수입니다. 주의해야할 사항은 배열안에 있는 데이터의 개수가 reshape을 해주어도 갯수가 같아야 합니다.

다음과 같은 행열을 2*3*4로 바꿔주겠습니다.

x = np.arange(1,25)
print(x)
print(x.shape)
# 출력 값
# [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
# (24,)

reshape을 위한 코드

x = x.reshape(2,3,4)
print(x)
print(x.shape)
# 출력 값

# [[[ 1  2  3  4]
#   [ 5  6  7  8]
#   [ 9 10 11 12]]

#  [[13 14 15 16]
#   [17 18 19 20]
#   [21 22 23 24]]]
# (2,3,4)

만약 갯수가 다를 경우

x = x.reshape(1,2,3)
print(x)
# 오류 문구
# ValueError: cannot reshape array of size 24 into shape (1,2,3)
# 라는 오류 메시지가 나옵니다.

'Data·AI > Numpy' 카테고리의 다른 글

Numpy 시작하기  (0) 2020.07.30

댓글