파이썬 함수

numpy 라이브러리(4) 데이터 인덱싱과 boolean 연산

개발연습자1 2022. 11. 23. 13:19

numpy라이브러리의 데이터도 다른 데이터 구조들처럼 데이터를 일정 범위 만큼 불러오거나 

슬라이싱 할수 있다.

 

1. 다차원배열의 인덱스 접근

     행렬데이터에서 원하는 값을 가져오려면 어느행 어느열인지 numpy에 명시하면 된다.

X
>>>> array([[ 1,  2,  3,  4,  5],
            [ 6,  7,  8,  9, 10],
            [11, 12, 13, 14, 15],
            [16, 17, 18, 19, 20],
            [21, 22, 23, 24, 25]])
            
#콤마의 왼쪽이 행!, 콤마의 오른쪽은 열을 적어준다.
X[ 1, 2]
>>> 8
X[ 2, 4]
>>> 15

 

2. numpy데이터  슬라이싱

   numpy데이터도 다른 데이터구조들처럼 슬라이싱을 할수가 있다.

   ndarray[start:end] 형식으로 사용된다.

x
>>> array([83, 40, 73, 54, 31, 76, 91, 39, 90, 25])
[ 2: 6+1 ]
>>> array([73, 54, 31, 76, 91])

X
>>> array([[15, 32, 79, 84, 81],
           [71, 67, 83, 86, 56],
           [28, 63, 44, 75, 72],
           [43, 84, 22,  7, 69]])

#데이터를 원하는 범위내로 잘라서 다시 데이터를 만들수 있다.
#이때 따로 뺀 데이터는 원본 데이터와 상태를 공유한다.
Y = X[ 1:2+1 , 1:3+1 ]
Y
>>> array([[100,  41,  74],
           [ 77,  92,  40]])

#원본 데이터와 상태를 공유하지 않고 완전히 분리시키려면 .copy()를 뒤에 써준다.
Y = X[0: 1+1 , 0:2+1].copy()

   

3. 중복된것 제거한 값만 리스트로 가져오기

    np.unique로 중복된 데이터가 없이 데이터만 가져올 수 있다.

page_view = [1,5,3,1,40,22,33,56,12,1,5,3]
page_view=np.array( page_view )

#중복된 데이터를 제공해 주는 함수
np.unique(page_view)
>>> array([ 1,  3,  5, 12, 22, 33, 40, 56])

 

4.boolean 연산

  boolean 연산은 기존에 list구조등에  boolean 연산에서 더 발전하여 더 간단하게 

  연산자를 이용해 원하는 값을 데이터에서 가져올수 있다.

 

X 
>>> array([[84, 41, 74, 55, 32],
           [77, 92, 40, 91, 26],
           [52,  7, 46, 13, 50],
           [67, 76, 86, 70, 65]])

# 80보다 큰 데이터는 몇개??
(X > 80).sum()
>>> 4

# 80보다 큰 데이터를 가져와라.
X[X>80]
>>> array([84, 92, 91, 86]

# 연산자가 2개 들어간 경우에는 &이나|을 쓴다.
X[(X>50)&(X<80)]
>>> array([74, 55, 77, 52, 67, 76, 70, 65])

 

 

반응형