개발학습일지

[Python] 넘파이 배열(어레이) 인덱싱, 슬라이싱 _변수[ ], 한 줄 띄기, 중복 제거 본문

Python/Numpy

[Python] 넘파이 배열(어레이) 인덱싱, 슬라이싱 _변수[ ], 한 줄 띄기, 중복 제거

처카푸 2024. 4. 7. 16:15

다차원배열의 인덱스 접근

- 변수[행][열] : 인덱스 번호 입력

- 변수[행, 열] : 인덱스 번호 입력

X = np.random.randint(1, 100, (4,5))
# array([[53, 80, 81, 34, 65],
       # [40, 45, 64, 96, 17],
       # [53, 38, 54, 86, 26],
       # [35,  9, 19, 78, 58]])
X[1][2]
# 64
X[1, 2]
# 64

 

슬라이싱(Slicing) -  잘라서 가져오기

- 사람의 언어로 A 부터 B 까지 = A ~ B / 컴퓨터의 언어로 A 부터 B 까지 = A : B

- 변수[A:B] : A 부터 B 까지 _인덱스 번호 입력 

- 변수[A:  ] :  A부터 끝까지

# 1) 글자 변수
fullname = '홍길동'
fullname[1:3]
# '길동'
fullname[1: ]
# '길동'


# 2) 넘파이 어레이 1차원 배열
x
# array([ 6,  6, 12, 12,  7,  5, 11])
x[2:5+1] # 내가 원하는 인덱스 번호에서 +1 을 해주면 헷갈리지 않고 입력 가능하다
# array([12, 12,  7,  5])

 

- 변수[ 행 ,  열 ] 

  행으로 잘라서 가져오기 : 변수 [ [ 원하는 행 인덱스 번호 , 원하는 행 인덱스 번호  ] ,   ]

  열로 잘라서 가져오기 : [     ,  [ 원하는 열 인덱스 번호 , 원하는 열 인덱스 번호  ] 

# 3) 넘파이 어레이 2차원 배열
X
# array([[53, 80, 81, 34, 65],
       # [40, 45, 64, 96, 17],
       # [53, 38, 54, 86, 26],
       # [35,  9, 19, 78, 58]])
X[ [0, 2] , ]
# array([[53, 80, 81, 34, 65],
       # [53, 38, 54, 86, 26]])
       
X[ : , [1,3,4] ]
# array([[80, 34, 65],
       # [45, 96, 17],
       # [38, 86, 26],
       # [ 9, 78, 58]])

 

- 한 줄 띄어서 슬라이싱 하기

- ' : : ' 사용

X
# array([[  1,  70,  70,  75],
       # [100,  73,  79,  58],
       # [ 82,  30,  89, 100]])
X[ 0::2 , 0:2+1 ]
# array([[ 1, 70, 70],
       # [82, 30, 89]])

 

- 중복 제거한 값만 슬라이싱 하기

- unique() 사용

x = np.random.randint(1, 10, 20)
x
# array([4, 2, 2, 6, 4, 7, 3, 3, 1, 6, 8, 6, 7, 3, 3, 8, 5, 7, 1, 2])
# 중복 제거하고 유니크한 수를 알려줘 # 연쇄 반응 사용
np.unique(x)
# array([1, 2, 3, 4, 5, 6, 7, 8])
np.unique(x).size  # 유니크한 수
# 8