본문 바로가기
  • Slow and Steady wins the race
abt Python/심화

Numpy 배열 생성

by cloudin 2023. 8. 13.

Numpy

: C 언어로 구현된 파이썬 라이브러리 (배열 형태의 데이터를 다루기 위함)

import 구문을 통해 설치된 Numpy를 불러 사용 (아나콘다를 설치했다면 따로 설치할 필요 없음)

: import numpy as np

import numpy as np

# 정수형 데이터
data1 = [0,1,2,3,4,5,6,7,8]
a1 = np.array(data1)
a1
# array([0, 1, 2, 3, 4, 5, 6, 7, 8])

# 실수형 데이터
data2 = [0.1, 3, 5, 10, 0.25]
a2 = np.array(data2)
a2     # 모든 데이터 값이 실수 형태로 나타난다
# array([ 0.1 ,  3.  ,  5.  , 10.  ,  0.25])

 

  • 배열(Array) : 순서가 있는 같은 종류의 데이터가 저장된 집합
a1.dtype   # dtype('int32')  : integer형, 32비트
a2.dtype   # dtype('float64')  : float형, 64비트

 

1) 시퀀스 데이터로부터 배열 생성

  • 시퀀스 데이터를 인자로 받아 배열 객체를 생성
  • 리스트와 튜플 타입의 데이터를 사용할 수 있으나 주로 리스트 데이터를 이용
np.array([0.5, 2, 6, 0.01])     # array([0.5 , 2.  , 6.  , 0.01])

np.array([[1,2,3], [4,5,6], [7,8,9]])   # 3x3 행렬
# array([[1, 2, 3],
#        [4, 5, 6],
#        [7, 8, 9]])

 

2) 범위를 지정해 배열 생성

  • arrange() 를 이용하여 배열 생성
  • 시작, 끝 범위를 지정하여 배열 생성 : arr_object = np.arange(start, stop, step)

1차원 배열

np.arange(0, 10, 2)   # array([0, 2, 4, 6, 8])  :0부터 12미만인 수들이 2씩 증가하는 배열

np.arange(1, 10)    # array([1, 2, 3, 4, 5, 6, 7, 8, 9])  : 1부터 10미만인 수들이 1씩 증가하는 배열

np.arange(5)   # 미만값만 지정한 경우
# array([0, 1, 2, 3, 4])

 

2차원 배열

# 2차원 배열 (행렬) 형태
np.arange(12).reshape(4,3)   # 0부터 12미만의 수의 4행 3열 행렬
# array([[ 0,  1,  2],
#        [ 3,  4,  5],
#        [ 6,  7,  8],
#        [ 9, 10, 11]])

 

object 활용 : reshape()

b1 = np.arange(12).reshape(4,3)
b1.shape    # (4, 3)

b2 = np.arange(5)   # 0부터 5 미만의 1차원 벡터 생성
b2          # array([0, 1, 2, 3, 4])

b2.shape    # (5, )  : b2의 구조

 

  • 시작과 끝, 데이터의 개수를 지정하여 배열 생성 : arr_object = np.linspace(start, stop, num)
np.linspace(1, 10, 10)    # 0부터 10이하의 수 10개
# array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

np.linspace(0, np.pi, 20)   # 0부터 pi값 이하의 수 20개
# array([0.        , 0.16534698, 0.33069396, 0.49604095, 0.66138793,
#        0.82673491, 0.99208189, 1.15742887, 1.32277585, 1.48812284,
#        1.65346982, 1.8188168 , 1.98416378, 2.14951076, 2.31485774,
#        2.48020473, 2.64555171, 2.81089869, 2.97624567, 3.14159265])

 

3) 특별한 형태의 배열 생성

  • zeros()와 ones()를 이용하여 0이나 1인 다차원 배열 생성
  • 1차원 배열의 경우 n을, 다차원 배열인 경우 m x n 형태로 생성

zeros() 사용

np.zeros(10)     # zeros() 사용하여 zero가 10개인 배열 생성
# array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

np.zeros((3,4))    # 0으로 구성된 3행 4열 행렬
# array([[0., 0., 0., 0.],
#        [0., 0., 0., 0.],
#       [0., 0., 0., 0.]])

ones() 사용

np.ones(10)   # ones() 사용하여 1이 10개인 배열 생성
# array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

np.ones((3,3))     # 1로 구성된 3행 3열 행렬
# array([[1., 1., 1.],
#        [1., 1., 1.],
#        [1., 1., 1.]])

 

  • 단위 행렬의 경우에는 eye()를 이용
np.eye(3)     # 3행 3열 단위 행렬
# array([[1., 0., 0.],
#        [0., 1., 0.],
#        [0., 0., 1.]])

 

4) 배열의 데이터 타입 변환

  • 데이터 타입 변환을 통해 문자의 배열 생성 : num_arr = str_arr.astype(dtype)
# 정수형이나 실수형으로 변환
str1 = np.array(['0.5', '0.24', '2', '3.14', '3.141592'])
num1 = str1.astype(float)
num1
# array([0.5     , 0.24    , 2.      , 3.14    , 3.141592])

str1.dtype     # dtype('<U8')  : 유니코드

num1.dtype    # dtype('float64')  : 실수형

 

  • 배열끼리 연산 가능하도록 하는 기호, 메서드
기호 내용
b 불, bool
i 기호가 있는 정수
u 기호가 없는 정수
f 실수
c 복소수
M 날짜
O 파이썬 객체
S 혹은 a 바이트 문자열
U 유니코드

 

5) 난수 배열의 생성

  • random 모듈을 이용해 난수생성
np.random.rand(2,3)    # 2행 3열 행렬 랜덤 생성

np.random.rand()   # 하나의 값만 랜덤 생성

np.random.rand(4)    # 4개의 원소를 가진 1차원 벡터 랜덤 생성

np.random.rand(2,3,4)     # 3 x 4 행렬을 2개 랜덤 생성

# 정수형 배열 랜덤 생성
np.random.randint(10, size=(4,4))   # 10미만의 데이터를 4 x 4 행렬 랜덤 생성

np.random.randint(1,40)   # 1부터 40 미만의 수 랜덤 생성

 

'abt Python > 심화' 카테고리의 다른 글

Matplotlib 그래프 (산점도, 막대그래프, 히스토그램, 파이그래프)  (1) 2023.08.21
Matplotlib 기초  (0) 2023.08.15
Pandas 데이터  (0) 2023.08.15
Pandas 기초  (0) 2023.08.14
Numpy 배열 연산, 인덱싱, 슬라이싱  (0) 2023.08.14