특정 인덱스에 대한 Python numpy 2D 배열 합계
다음과 같은 2 차원 배열이 있습니다.
img = [
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[2, 2, 2], [3, 2, 3], [6, 7, 6]],
[[9, 8, 1], [9, 8, 3], [9, 8, 5]]
]
그리고 나는 다음과 같은 특정 지수의 합계를 얻고 싶습니다.
indices = [[0, 0], [0, 1]] # which means img[0][0] and img[0][1]
# means here is represents
이 링크의 stackoverflow에서 1-d 배열에 대한 유사한 질문 이 있었지만 사용하려고 할 때 오류가 발생했습니다 print(img[indices])
. 의 요소 img
가 인덱스로 나타내는 요소임을 분명히 하고 평균 그것의 합계.
예상 출력
[5, 7, 9]
답변
2 PabloC
NumPy 사용 :
import numpy as np
img = np.array(img)
img[tuple(indices)].sum(axis = 0)
#array([5, 7, 9])
1 TấnNguyên
결과가 [5, 7, 9]이면 목록 열의 합계입니다. 그런 다음 쉽습니다.
img = np.asarray(img)
indices = [[0, 0], [0, 1]]
img[(indices)].sum(axis = 0)
결과:
array([5, 7, 9])
1 MadPhysicist
멋진 인덱스를 제공 할 때 인덱스 튜플의 각 요소는 다른 축을 나타냅니다. 인덱스 배열의 모양은 얻은 출력의 모양에 브로드 캐스트됩니다.
귀하의 경우의 행은 indices.T
각 축의 인덱스입니다. 그것들을 인덱스 튜플으로 변환하고 추가 할 수 slice(None)
있는데, 이는 :
. 결과 2D 배열의 평균을 직접 취할 수 있습니다.
img[tuple(indices.T) + (slice(None),)].sum(0)
또 다른 방법은 splat 연산자를 사용하는 것입니다.
img[(*indices.T, slice(None))].sum(0)