ndarrays의 인덱싱은 표준 파이썬 x[obj] 구문을 사용하여 수행할 수 있습니다. 여기서 x는 배열이고 obj는 선택 항목입니다.
세 가지 종류의 인덱싱을 사용할 수 있습니다. -
- 현장 액세스
- 기본 슬라이싱
- 고급 색인 생성
어떤 종류의 인덱싱이 있는지는 obj에 따라 다릅니다. 이 섹션에서는 기본 슬라이싱 및 고급 인덱싱에 주로 집중할 것입니다.
고급 인덱싱을 두 부분으로 나눌 수 있습니다 -
- 정수 배열 인덱싱
- 부울 인덱싱
기본 슬라이싱
슬라이싱의 Python 기본 개념은 기본 슬라이싱에서 n 차원으로 확장됩니다. 시작, 중지 및 단계 매개변수를 슬라이스 기능에 제공하여 구성된 파이썬 슬라이스 객체와 마찬가지로. 특정 출력을 얻기 위해 슬라이스 객체가 배열에 전달되어 배열의 일부를 추출합니다.
예시 1
import numpy as np arr = np.arange(25) s = slice(2, 21, 4) print (arr[s])
출력
[ 2 6 10 14 18]
위의 예에서는 먼저 arange() 함수를 사용하여 ndarray 객체(arr)를 생성했습니다. 그런 다음 시작, 중지 및 단계 값을 할당하여 슬라이스 개체를 만듭니다. 슬라이스 객체를 ndarray에 전달할 때 인덱스 2에서 시작하여 4단계로 최대 21까지 배열의 일부(슬라이스)를 얻습니다.
위의 프로그램을 작성하는 또 다른 방법,
# Another way to write above program import numpy as np arr = np.arange(25) s = arr[2:21:4] print (s)로 작성하는 또 다른 방법
출력
[ 2 6 10 14 18]
단일 항목 슬라이스
#Slice single item from an array import numpy as np arr = np.arange(10) s = arr[9] print(s)로 슬라이스
출력
9
색인에서 시작하는 슬라이스 항목
#slice item starting from index import numpy as np arr = np.arange(10) s = arr[3:] print(s)
출력
[3 4 5 6 7 8 9]
인덱스 사이 항목 조각
#slice item between indexes import numpy as np arr = np.arange(10) s = arr[3: 7] print(s)로 가져오기
출력
[3 4 5 6]
위의 두 가지 방법은 아래와 같이 다차원 ndarray에도 적용됩니다. -
#slice item between indexes import numpy as np arr = np.array([[[1],[2],[3]], [[4],[5],[6]], [[7], [8], [9]]]) s = arr[1:] print(s)
출력
[[[4] [5] [6]] [[7] [8] [9]]]
고급 색인 생성
정수 배열 인덱싱:
정수로 간단한 배열을 만들어 봅시다.
arr=np.array([[1,2],[3,4],[5,6]]) print(arr)
출력
[[1 2] [3 4] [5 6]]
다차원 ndarray에서 행 인덱스가 [0, 1, 2]이고 열 인덱스가 [1, 0, 1]인 요소와 같이 배열에서 특정 요소를 선택하려고 합니다.
import numpy as np arr=np.array([[1,2],[3,4],[5,6]]) s = arr[[0, 1, 2],[1, 0, 1]] print(s)
출력
[2 3 6]
0 인덱스로 선택하면 첫 번째 행이 제공됩니다 -
>>> arr=np.array([[1,2],[3,4],[5,6]]) >>> print(arr[0]) [1 2]
마찬가지로 배열에서 단일 항목을 선택할 수 있습니다. 예를 들어 1을 행 인덱스로 선택하고 1을 열 인덱스 요소로 선택하여 배열 값 4를 제공합니다.
>>> print(arr[[1], [1]]) [4]
덧셈과 같은 산술 연산을 할 수 있고 덧셈을 수행한 후 특정 인덱스의 값을 반환합니다.
>>> print(arr[[1], [1]]+ 1) [5]
보시다시피 인덱스 값은 1씩 증가하지만 실제 배열은 그대로 유지됩니다.
>>> arr array([[1, 2], [3, 4], [5, 6]])
하지만 배열의 값을 변경하고 배열의 새 복사본을 반환할 수 있습니다.
>>> arr[[1], [1]] +=1 >>> arr array([[1, 2], [3, 5], [5, 6]])
부울 인덱싱
결과가 부울 연산의 결과가 될 때 부울 인덱싱을 사용했습니다.
>>> arr=np.array([[0,1,2], [3,4,5], [6,7,8], [9,10,11]]) >>> arr array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]])
1인 값을 반환합니다.
>>> arr[arr == 1] array([1])
짝수인 값을 반환합니다.
>>> arr[arr %2 == 0] array([ 0, 2, 4, 6, 8, 10])