이것은 중복 질문 일 수 있지만 필요한 정확한 해결책을 찾을 수 없습니다.NumPy 배열의 N 행 합계
모든 N 개의 행 (이 예에서는 4 개)을 합산하려고합니다. 그래서 8 by 9 행렬에서 2 행 9 열, 즉 행 0-3을 합친 다음 4-7 행을 합산합니다. 지금 당장은 이것이 내가 가진 해결책이지만 목록 이해력을 사용하지 않는 방법이 있습니까? 이 작업을 수행하는 데 "numpy"한 방법이 있습니까? 왜냐하면 단일 2 x 9 배열이 아닌 2 1 x 9 배열의 목록으로 끝나기 때문입니다.
입력 배열이 8x9로 고정되어 있지 않으면 12x9 또는 28x9가 될 수 있지만 입력 배열의 총 행 수가 항상 N의 정수 배가됩니다 어떤 및 N = 예 8 4)
는>>> import numpy as np
>>> a = np.arange(72).reshape(8,9)
>>> a
array([[ 0, 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, 31, 32, 33, 34, 35],
[36, 37, 38, 39, 40, 41, 42, 43, 44],
[45, 46, 47, 48, 49, 50, 51, 52, 53],
[54, 55, 56, 57, 58, 59, 60, 61, 62],
[63, 64, 65, 66, 67, 68, 69, 70, 71]])
>>> b = [a[i:(i+1)*4,:] for i in range(0,len(a),4)]
>>> b
[array([[ 0, 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, 31, 32, 33, 34, 35]]),
array([[36, 37, 38, 39, 40, 41, 42, 43, 44],
[45, 46, 47, 48, 49, 50, 51, 52, 53],
[54, 55, 56, 57, 58, 59, 60, 61, 62],
[63, 64, 65, 66, 67, 68, 69, 70, 71]])]
>>> b = [np.sum(a[i:(i+1)*4,:],axis=0) for i in range(0,len(a),4)]
>>> b
>>>[array([54, 58, 62, 66, 70, 74, 78, 82, 86]), array([198, 202, 206, 210,
214, 218, 222, 226, 230])]
당신이 행의 수는 다를 것이라고 언급 한대로, 당신의 일반적인 모양의 배열을 작동해야합니다. – Divakar
네가 맞습니다! 내 게시물을 업데이트합니다. – bFig8
@ bFig8 그 이유는 제 솔루션 (솔루션의 차이점)에서 일반적인 솔루션에 대해'-1'을 사용했기 때문입니다. – Divakar