[Numpy] 넘파이 배열 인덱싱 하기
📍 예시로 사용할 NumPy 배열
arr = np.arange(0, 11)
arr 출력 결과
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
arr_2d = np.arange(0, 20).reshape(4, 5)
arr_2d 출력 결과
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
1. 특정 요소만 불러오기
배열에서 특정 요소를 불러오는 방법은 Python의 list에서 사용하는 것처럼 []
을 사용하면 된다.
(1) 1d 배열에서 특정 요소 뽑기
arr
에서 3번째에 위치한 요소를 뽑아오려면 다음과 같이 코드를 작성하면 된다.
# 인덱스는 0부터 시작하므로 배열에서 3번째에 있는 것은 인덱스로 2이다.
arr[2]
출력결과
2
(2) 2d 배열에서 특정 요소 뽑기
2차 배열에서 특정 요소를 불러오려면 행과 열에 맞는 인덱스를 넣어줘야 한다. arr_2d
에서 2번째 행, 3번째 열에 위치한 요소를 뽑으려면 다음과 같이 코드를 작성하면 된다.
# 행:2, 열:3
arr_2d[1][2]
출력결과
7
2차 구조의 배열에서 특정 요소를 뽑기 위해 대괄호를 두번 사용했다.(행, 열) 하지만 하나의 대괄호에 행과 열 인덱스를 ,
로 구분해서 넣어주어도 같은 결과를 불러올 수 있다.
# 행:2, 열:3
arr_2d[1, 2]
출력결과
7
2. 특정 요소들의 집합 불러오기
배열에서 특정 요소들(연속된 위치에 있는)을 뽑으려면 :
를 사용하면 특정 부분만 뽑을 수 있다.
cf. 만약 인덱스 번호 없이 : 만 사용하면 전체 요소를 불러온다.
(1) 1d 배열에서 요소들의 집합 뽑기
arr
에서 세 번째에 위치한 요소부터 5개를 뽑는다고 가정하면 코드를 다음과 같이 작성하면 된다.
# 세번째 요소부터 5개의 요소 출력
arr[2:7]
출력 결과
array([2, 3, 4, 5, 6])
(2) 2d 배열에서 요소들의 집합 뽑기
arr_2d
에서 두 번째 행에서 열을 두번째 부터 네번째에 해당하는 요소 집합만 불러온다고 가정하면 코드를 다음과 같이 작성할 수 있다.
# 행: 2, 열: 2 ~ 4
arr_2d[1, 1:4]
출력 결과
array([6, 7, 8])
만약 두번째 행, 첫번째&세번째 열에 해당하는 요소만 불러오려면 어떻게 코드를 작성하면 좋을까? 첫번째와 세번째 열은 연속되지 않아서 :
를 사용할 수 없다. 열 인덱스를 넣어주는 곳에 튜플로 여러 열에 해당하는 인덱스 번호를 전달하면 된다. 코드는 다음과 같이 작성하면 된다.
# 두번째 행에서 열이 1, 3인 요소 불러오기
arr_2d[1, (0, 2)]
출력 결과
array([5, 7])
3. 특정 조건에 맞는 요소 불러오기
조건에 해당하는 요소만 불러올 땐 Pandas에서 조건에 해당하는 데이터만 추출해내는 방법과 유사하다. []
안에 조건을 작성해주면 된다.
# arr_2d에서 3의 배수인 요소만 불러오기
arr_2d[arr_2d % 3 == 0]
출력 결과
array([ 0, 3, 6, 9, 12, 15, 18])
만약, 0을 제외한 3의 배수만 뽑고싶다면 조건을 하나 더 추가해주면 된다. 조건을 연결할 땐, 조건들이 모두 만족해야 한다면 &
를, 조건들 중 하나만 만족해도 된다면 |
를 사용하면 된다.
cf. &는 and, |는 or의 의미를 가진다.
# arr_2d에서 0이 아닌 3의 배수인 요소만 불러오기
arr_2d[(arr_2d % 3 == 0) & (arr_2d != 0)]
출력 결과
array([ 3, 6, 9, 12, 15, 18])
4. Reference
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기