군침이 싹 도는 코딩

Python numpy 데이터 억세스 슬라이싱 본문

Python/Numpy

Python numpy 데이터 억세스 슬라이싱

mugoori 2022. 11. 23. 12:10

● 1차원 데이터(벡터)를 억세스하는법

x
>>> array([83, 40, 73, 54, 31, 76, 91, 39, 90, 25])


x[2]
>>> 73

 

 

● 2차원 데이터(행렬)를 억세스하는법

X
>>> array([[13, 22, 49, 42, 80],
          [91, 63, 58, 20, 34],
          [60, 40, 16, 37, 66],
          [ 2, 44, 16, 87, 84]])


X[1][2]
>>> 58

 

 

● 1차원 데이터(벡터)를 슬라이싱 하는법

x
>>> array([83, 40, 73, 54, 31, 76, 91, 39, 90, 25])


x[2:6+1]
>>> array([73, 54, 31, 76, 91])

 

 

● 2차원 데이터(행렬)를 슬라이싱 하는법

X
>>> array([[13, 22, 49, 42, 80],
          [91, 63, 58, 20, 34],
          [60, 40, 16, 37, 66],
          [ 2, 44, 16, 87, 84]])


X[1:2+1,1:3+1]
>>> array([[63, 58, 20],
          [40, 16, 37]])
          
# 주의할점은 2차원 데이터는 열은 비워도 되지만 행은 비우면 에러가 난다.
X[2,]
>>> array([60, 40, 16, 37, 66])
X[,2]
>>> SyntaxError: invalid syntax

#따라서 이렇게 해줘야 한다
X[:,2]
>>> array([49, 58, 16, 16])

 

 

●  원하는 2차원 데이터(행렬)를 슬라이싱 하는법

X
>>> array([[ 13,  22,  49,  42,  80],
          [ 91,  63,  58,  20,  34],
          [ 60,  40,  16,  37,  66],
          [  2,  44,  16,  87, 100]])
          
          
# X 의 첫번째 행과 세번째 행 중에서 아래것을 가져오기
# 49,  42,  80
# 58,  20,  34

X[(0,2),2:]
>>> array([[49, 42, 80],
          [16, 37, 66]])

 

 

●  중복된 것을 제거한값만 가져오기

page_view
>>> array([ 1,  5,  3,  1, 40, 22, 33, 58, 12,  1,  5,  3])


np.unique(page_view)
>>> array([ 1,  3,  5, 12, 22, 33, 40, 58])

 

 

●  boolean 연산

X
>>> array([[ 13,  22,  49,  42,  80],
          [ 91,  63,  58,  20,  34],
          [ 60,  40,  16,  37,  66],
          [  2,  44,  16,  87, 100]])   



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


# 80보다 큰 데이터를 가져와라
X > 80
>>> array([[False, False, False, False, False],
          [ True, False, False, False, False],
          [False, False, False, False, False],
          [False, False, False,  True,  True]])
X[X>80]
>>> array([ 91,  87, 100])


# X 의 데이터 중에서 50보다 크고 80보다 작은 데이터를 가져오세요
X > 50 and X < 80
>>> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
# and , or 연산자는 조건문에서만 사용한다
# 데이터 억세스에서는 and , or 대신 & , | 를 사용한다.

(X > 50 ) & (X < 80)
>>> array([[False, False, False, False, False],
          [False,  True,  True, False, False],
          [ True, False, False, False,  True],
          [False, False, False, False, False]])
X[ (X > 50 ) & (X < 80) ]
>>> array([63, 58, 60, 66])

'Python > Numpy' 카테고리의 다른 글

Python Numpy - axis  (0) 2022.11.23
Python numpy - random  (0) 2022.11.23
Python library - Numpy  (0) 2022.11.22