일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 | 29 | 30 |
- Tkinter
- Google Spreadsheet
- Python
- Redshift
- c#
- dataframe
- SQL
- PostgreSQL
- google apps script
- Java
- list
- Github
- PySpark
- Google Excel
- math
- matplotlib
- Mac
- PANDAS
- GIT
- hive
- Kotlin
- Excel
- array
- Apache
- 파이썬
- numpy
- django
- string
- gas
- Today
- Total
달나라 노트
Python numpy : array indexing 본문
1차원 array에서 특정 위치의 요소를 얻어내기 위한 indexing은 아래와 같습니다.
import numpy as np
arr_test = np.array([3, 1, 4, 5, 7, 2])
print(arr_test[0])
print(arr_test[1])
print(arr_test[2])
print(arr_test[3])
-- Result
3
1
4
5
python의 list에서 indexing을 하듯이 대괄호를 이용해서 indexing을 할 수 있습니다.
import numpy as np
arr_test = np.array([3, 1, 4, 5, 7, 2])
print(arr_test[1:3])
print(arr_test[0:3])
print(arr_test[1:4])
print(arr_test[0:6])
-- Result
[1 4]
[3 1 4]
[1 4 5]
[3 1 4 5 7 2]
콜론(:)을 이용하면 위처럼 array 속 일정 범위의 요소들만 추출할 수 있습니다.
[start_index:end_index]
위처럼 적으면 되며 start_index(포함) 부터 end_index(미포함) 까지의 범위에 있는 요소들을 return합니다.
import numpy as np
arr_test = np.array(
[
[9, 1, 5, 7],
[2, 6, 5, 8],
[0, 3, 0, 2],
[4, 0, 7, 3]
]
)
print(arr_test)
print(arr_test[0])
print(arr_test[1])
print(arr_test[2])
-- Result
[[9 1 5 7]
[2 6 5 8]
[0 3 0 2]
[4 0 7 3]]
[9 1 5 7]
[2 6 5 8]
[0 3 0 2]
다차원 array에서도 indexing을 이용하면 원하는 요소를 추출할 수 있습니다.
import numpy as np
arr_test = np.array(
[
[9, 1, 5, 7],
[2, 6, 5, 8],
[0, 3, 0, 2],
[4, 0, 7, 3]
]
)
print(arr_test)
print(arr_test[0][1])
print(arr_test[1][1])
print(arr_test[2][1])
print(arr_test[3][1])
print(arr_test[3][2])
-- Result
[[9 1 5 7]
[2 6 5 8]
[0 3 0 2]
[4 0 7 3]]
1
6
3
0
7
이 예시처럼 다중 indexing으로 원하는 요소 하나만을 추출할 수도 있습니다.
import numpy as np
arr_test = np.array(
[
[9, 1, 5, 7],
[2, 6, 5, 8],
[0, 3, 0, 2],
[4, 0, 7, 3]
]
)
print(arr_test)
print(arr_test[0:2])
print(arr_test[1:3])
-- Result
[[9 1 5 7]
[2 6 5 8]
[0 3 0 2]
[4 0 7 3]]
[[9 1 5 7]
[2 6 5 8]]
[[2 6 5 8]
[0 3 0 2]]
콜론(:)을 이용한 범위 indexing을 이용하면 마찬가지로 특정 범위에 위치한 내부 array를 추출할 수 있습니다.
이것을 좀 더 쉽게 이해해보면 다음과 같습니다.
(첫 번째 행 = 0행, 두 번째 행 = 1행, ... / 첫 번째 열 = 0열, 두 번째 열 = 1열, ... 처럼 표기하였습니다.)
arr_test[0:2] -> 원본 array의 0행부터 1행까지를 추출하라
arr_test[1:3] -> 원본 array의 1행부터 2행까지를 추출하라
import numpy as np
arr_test = np.array(
[
[9, 1, 5, 7],
[2, 6, 5, 8],
[0, 3, 0, 2],
[4, 0, 7, 3]
]
)
print(arr_test)
print(arr_test[0:2, 0:2])
print(arr_test[1:3, 2:4])
print(arr_test[0:3, 3:4])
-- Result
[[9 1 5 7]
[2 6 5 8]
[0 3 0 2]
[4 0 7 3]]
[[9 1]
[2 6]]
[[5 8]
[0 2]]
[[7]
[8]
[2]]
이를 좀 더 응용하면 위처럼 2차원 array에 대한 indexing에서 콤마를 이용해 범위 하나를 더 줄 수 있습니다.
각 코드의 의미는 다음과 같습니다. 아래에 적힌 의미를 보고 한번 원본 array와 추출된 array의 위치를 비교해봅시다.
(첫 번째 행 = 0행, 두 번째 행 = 1행, ... / 첫 번째 열 = 0열, 두 번째 열 = 1열, ... 처럼 표기하였습니다.)
arr_test[0:2, 0:2] -> 원본 array의 0행~1행, 0열~1열의 데이터를 추출하여 새로운 array로 만들어라.
arr_test[1:3, 2:4] -> 원본 array의 1행~2행, 2열~3열의 데이터를 추출하여 새로운 array로 만들어라.
arr_test[0:3, 3:4] -> 원본 array의 0행~2행, 3열의 데이터를 추출하여 새로운 array로 만들어라.
'Python > Python numpy' 카테고리의 다른 글
Python numpy : zeros_like (같은 크기의 0으로 채워진 행렬 생성, 같은 크기의 행렬 생성) (0) | 2022.03.22 |
---|---|
Python numpy : pad (array 테두리 데이터 추가. array 테두리 추가) (0) | 2022.03.22 |
Python numpy : 행렬 연산 (+, -, *, /, @, 행렬의 곱) (0) | 2022.03.13 |
Python numpy : T (전치 행렬, Transpose) (2) | 2022.03.13 |
Python numpy : 행렬 (0) | 2022.03.13 |