본문 바로가기
나만의 파이썬

배열 데이터 Numpy 정리.

by 초보코딩러 2021. 6. 6.

출처:https://chancoding.tistory.com/10

파이썬에서 Numpy, pandas는 정말 중요하다고 많이 들어서 이번 기회에 이렇게 정리를 해봤다

한번 봤던 내용이지만 사용을 안 하다 보면 기억이.. 다시 한번 기록을 해본다.

 

import numpy as np #패키지를 불러올때 먼저 

1. 리스트로 부터 Numpy의 1차원 배열을 생성하는 예

data1 = [0, 1, 2, 3, 4, 5]

a1 = np.array(data1)
a1
array([0, 1, 2, 3, 4, 5])
data2 = [0.1, 5, 4, 12, 0.5]

a2 = np.array(data2)
a2
array([ 0.1,  5. ,  4. , 12. ,  0.5])
#리스트 안에 실수가 포함돼 있으면 실수로 변환됨.
a2.dtype
dtype('float64')

2. 리스트 데이터를 직접 넣어서 배열 객체를 생성

np.array([1,2,3,4,5])

out: array([1, 2, 3, 4, 5])

 

3. 다차원 배열의 형성

np.array([[1,2,3],[4,5,6],[7,8,9]])  #리스트를 밖에서 한번 더 감싸준다.

out: array([[1, 2, 3],

              [4, 5, 6],

              [7, 8, 9]])

4. 범위를 지정해 배열 생성

np.arange(0, 10, 2) #np.arange(시작범위,끝범위,step)
# array([0, 2, 4, 6, 8])

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

np.arange(12).reshape(4,3) #4*3배열 생성
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
       
      
np.linspace(0, np.pi,20) #(start, stop[,num])
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])

5.단위 행렬을 생성하는 방법. 단위 행력은 n x n인 정사각형 행렬에서 주 대가선이 모두 1이고 나머지는 0인 행렬을 의미합니다.

 

np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

6. 배열의 데이터 타입 변환

st1_a1 = np.array(['1.232','0.232','5.2132','8','9'])
num_a1 = st1_a1.astype(float)
num_a1
array([1.232 , 0.232 , 5.2132, 8.    , 9.    ])

7. 난수 배열의 생성

np.random.rand(2,3) # 2 x 3 2차원 배열의 실수 난수 생성 
array([[0.79928795, 0.987102  , 0.6109984 ],
       [0.32604373, 0.6182609 , 0.70267377]])
np.random.rand(2,3,4)
array([[[0.05770752, 0.26472669, 0.90182377, 0.43347328],
        [0.45685163, 0.83181569, 0.61535999, 0.11876695],
        [0.18300043, 0.74174714, 0.73860714, 0.07551203]],

       [[0.42019787, 0.79028413, 0.87131113, 0.72630516],
        [0.14347198, 0.95733301, 0.33905009, 0.66063864],
        [0.18447118, 0.41845772, 0.2337903 , 0.73243338]]])

8.지정한 범위에 해당하는 정수로 난수 배열을 생성

np.random.randint(10,size=(3,4))
array([[0, 0, 5, 5],
       [6, 2, 5, 8],
       [1, 9, 4, 9]])
       
np.random.randint(1,30 ,size=(3,4))
array([[20, 28,  5,  1],
       [14, 13, 21,  8],
       [28, 14, 13, 17]])

9.배열의 인덱싱과 슬라이싱

a1 = np.array([0, 10, 20, 30,40,50]
array([ 0, 10, 20, 30, 40, 50])

a1[3]
30

9#1. 1차원 배열에서 여려개의 원소 선택 

a1[[1,2,3]]
array([10, 20, 30])

10. 배열에 조건을 지정해 조건을 만족하는 배열 선택 

a = np.array([1,2,3,4,5,6])
a[a>3]
array([4, 5, 6])

a[(a % 2) == 0]
array([2, 4, 6])

a[:4] # [시작:끝]
array([1, 2, 3, 4])

 

11. 2차원 배열의 슬라이싱.

b2 = np.arange(10, 100, 10).reshape(3,3)
[[10 20 30]
 [40 50 60]
 [70 80 90]]
 
 b2[1:3, 1:3] #[행의시작과끝(1:3) , 열의 시작과 끝(1:3)]
 array([[50, 60],
       [80, 90]])
       
b2[1][0:2]  # 2차원 배열에서 행을 지정하고 열을 슬라이싱하는 예[행지정][열슬라이싱]
array([40, 50])

12.열고정 행은 알아서

reshape(-1,1) #열고정 행은 알아서

14.넘파이 sort() 유형

# 내림차순
np.sort()[::-1]
argsort()
np.argsort(A)
# 정렬된 행렬의 원본 행렬 인덱스를 반환.

 

댓글