Python/Numpy

[Python] Numpy 데이터 엑세스

건휘맨 2024. 4. 4. 12:17

넘파이 데이터 변수[ ]에 연산을 넣으면 해당 연산에 맞는 값을 출력해준다

>>> X
array([[16, 47, 97, 57, 73],
       [41, 12, 90, 83, 84],
       [ 6, 98, 20, 43, 78],
       [65, 19, 40,  5, 64]])

>>> X > 70
array([[False, False,  True, False,  True],
       [False, False,  True,  True,  True],
       [False,  True, False, False,  True],
       [False, False, False, False, False]])
       
>>> (X > 70).sum()       
7

>>> X[X>70]
array([97, 73, 90, 83, 84, 98, 78])

 

[ ] 특정값만 잘라서 가져오는 슬라이싱을 하려면 콤마의 왼쪽이 행, 오른쪽에 열을 적어준다

>>> X[2][1]
98

>>> X[2, 1]  # , 기준 왼쪽은 행 오른쪽은 열
98

 

콜론을 사용해 원하는 부분만 슬라이싱도 가능

>>> x = np.random.randint(25,99,9)
>>> x
array([71, 90, 83, 37, 74, 59, 60, 76, 37])

>>> x[3:5+1]
array([37, 74, 59])

>>> X = np.random.randint(25,99,(4,5))
>>> X
array([[97, 44, 52, 48, 45],
       [43, 74, 98, 78, 89],
       [46, 68, 57, 39, 71],
       [70, 55, 32, 29, 92]])
       
>>> X[1:2+1, 1:3+1]
array([[74, 98, 78],
       [68, 57, 39]])

 

이어진 데이터가 아닌 데이터를 슬라이싱 하고싶을때는 [ ]안에 [ ]를 사용

# 첫 번째 행, 세 번째 행 가져오기

>>> X[[0, 2], ]
array([[97, 44, 52, 48, 45],
       [46, 68, 57, 39, 71]])
       
# 첫 번째, 세 번째, 네 번째 열 가져오기
>>> X[: , [0,2,3]]
array([[97, 52, 48],
       [43, 98, 78],
       [46, 57, 39],
       [70, 32, 29]])

 

' = ' 기호를 사용하여 데이터값을 변경하기도 가능

# X 데이터 맨 앞에 있는 97 을 0 으로 바꾸기

>>> X[0, 0] = 100
>>> X
array([[100,  44,  52,  48,  45],
       [ 43,  74,  98,  78,  89],
       [ 46,  68,  57,  39,  71],
       [ 70,  55,  32,  29,  92]])

 

변수 Y 에 X를 슬라이싱해서 저장한 후  Y 데이터를 변경하면 X 데이터도 변경

>>> X
array([[100,  44,  52,  48,  45],
       [ 43,  74,  98,  78,  89],
       [ 46,  68,  57,  39,  71],
       [ 70,  55,  32,  29,  92]])
       
>>> Y = X[0:2, 0:3]
>>> Y
array([[100,  44,  52],
       [ 43,  74,  98]])
       
>>> Y[0,0] = 0       
>>> Y
array([[ 0, 44, 52],
       [43, 74, 98]])

>>> X
array([[ 0, 44, 52, 48, 45],
       [43, 74, 98, 78, 89],
       [46, 68, 57, 39, 71],
       [70, 55, 32, 29, 92]])

 

copy( ) : 다른 변수로 저장할때 뒤에 copy() 작성시 메모리 공유를 하지 않음

(X 를 슬라이싱한 Y  를 변경해도 X 의 데이터는 변경되지 않음)

>>> Y = X[0:2, 0:3].copy()
>>> Y 
array([[ 0, 44, 52],
       [43, 74, 98]])
       
>>> Y[0,0]= 100
>>> Y
array([[100,  44,  52],
       [ 43,  74,  98]])

>>> X
array([[ 0, 44, 52, 48, 45],
       [43, 74, 98, 78, 89],
       [46, 68, 57, 39, 71],
       [70, 55, 32, 29, 92]])