본문 바로가기

코딩으로 익히는 Python/Numpy

[Python] 06. numpy 2차원 데이터 : boolean indexing,vstack(),hstack(),axis=0,axis=1예제

728x90
반응형
SMALL
import numpy as np

 

data = np.array( [ [1,2,3],[7,5,2],[10,1,8],[6,3,4] ] )
data
[OUT] :

array([[ 1,  2,  3],
       [ 7,  5,  2],
       [10,  1,  8],
       [ 6,  3,  4]])

2차원 데이터 인덱싱(indexing), 슬라이싱(slicing) 예제

data.shape
[OUT] :

(4, 3)

 

data.reshape(-1,2,2) # [면,행,열], -1은 알아서 설정하라는 의미
[OUT] :

array([[[ 1,  2],
        [ 3,  7]],

       [[ 5,  2],
        [10,  1]],

       [[ 8,  6],
        [ 3,  4]]])

 

data # 위에서 reshape을 했지만 data에 담지 않았으므로 바뀌지 않음
[OUT] :

array([[ 1,  2,  3],
       [ 7,  5,  2],
       [10,  1,  8],
       [ 6,  3,  4]])

 

data[1]
[OUT] :

array([7, 5, 2])

 

data[1,1]
[OUT] :

5

 

data[[0,2,3]]
[OUT] :

array([[ 1,  2,  3],
       [10,  1,  8],
       [ 6,  3,  4]])

 

data[1:3,1]
[OUT] :

array([5, 1])

 

data[1:,[0,2]]
[OUT] :

array([[ 7,  2],
       [10,  8],
       [ 6,  4]])

2차원 데이터 인덱싱(indexing), 슬라이싱(slicing) 연습문제

 

#1. data의 마지막 열을 제외하고 선택하시오.

#1 solution

data[:,:-1] #특성데이터 추출시 많이 활용
[OUT] :

array([[ 1,  2],
       [ 7,  5],
       [10,  1],
       [ 6,  3]])

 

#2. data의 마지막 열만 선택하시오.

data[:,[-1]]
[OUT] :

array([[3],
       [2],
       [8],
       [4]])

2차원 데이터 boolean indexing 예제

data[[True,True,False,True]]
[OUT] :

array([[1, 2, 3],
       [7, 5, 2],
       [6, 3, 4]])

2차원 연산 예제

data+2
[OUT] :

array([[ 3,  4,  5],
       [ 9,  7,  4],
       [12,  3, 10],
       [ 8,  5,  6]])

 

data[1] = data[1] + 2
data
[OUT] :

array([[ 1,  2,  3],
       [ 9,  7,  4],
       [10,  1,  8],
       [ 6,  3,  4]])

 

data[:,1]
[OUT] :

array([2, 7, 1, 3])

 

data[:,0] > 5
[OUT] :

array([False,  True,  True,  True])

 

data[data[:,0]>5]
[OUT] :

array([[ 9,  7,  4],
       [10,  1,  8],
       [ 6,  3,  4]])

 

(data[:,1]>=3) & (data[:,1]<=7)
[OUT] :

array([False,  True, False,  True])

2차원 데이터 추가, 수정, 삭제, 검색, 정렬 예제

ax = np.array( [[1,2],[3,4]])
ay = np.array( [[5,6],[7,8]])

 

np.append(ax,ay, axis=None) # 1차원으로 풀어서
[OUT] :

array([1, 2, 3, 4, 5, 6, 7, 8])

 

np.append(ax,ay, axis=0) # row에 추가
[OUT] :

array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

 

np.append(ax,ay, axis=1) # column에 추가
[OUT] :

array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

 

np.hstack((ax,ay)) # 수평으로 쌓기
[OUT] :

array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

 

np.vstack((ax,ay)) # 수직으로 쌓기
[OUT] :

array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

 

np.delete(data,[0,2])
[OUT] :

array([ 2,  9,  7,  4, 10,  1,  8,  6,  3,  4])

 

np.delete(data,[0,2],axis=0)
[OUT] :

array([[9, 7, 4],
       [6, 3, 4]])

 

np.delete(data,[0,2],axis=1)
[OUT] :

array([[2],
       [7],
       [1],
       [3]])

 

np.sort(data,axis=None)
[OUT] :

array([ 1,  1,  2,  3,  3,  4,  4,  6,  7,  8,  9, 10])

2차원 통계 axis
디폴트 axis = None : 1차원의 통계
axis = 0 : 컬럼별 통계값
axis = 1 : 로우별 통계값


2차원 통계 예제

data
[OUT] :

array([[ 1,  2,  3],
       [ 9,  7,  4],
       [10,  1,  8],
       [ 6,  3,  4]])

 

data.sum()
[OUT] :

50

 

# col sum
data.sum(axis=0)
[OUT] :

array([26, 13, 19])

 

# row sum
data.sum(axis=1)
[OUT] :

array([ 6, 20, 19, 13])

 

data.mean(axis=0)
[OUT] :

array([6.5 , 3.25, 4.75])

 

data.mean(axis=1)
[OUT] :

array([2.        , 6.66666667, 6.33333333, 4.33333333])

 

data.max()
[OUT] :

10

 

data.argmax()
[OUT] :

6

 

data.argmax(axis=0)
[OUT] :

array([2, 1, 2])

 

data.argmax(axis=1) #분류에서 많이 활용됨
[OUT] :

array([2, 0, 0, 0])

 

for a,b,c in data:
    print(a,b,c)
[OUT] :

1 2 3
9 7 4
10 1 8
6 3 4

Review
- 2차원 데이터 axis 0컬럼 1로우
728x90
반응형
LIST