Скажем, у меня есть следующий массив:сумма частей numpy.array
a = np.array([[1,2,3,4,5,6],
[7,8,9,10,11,12],
[3,5,6,7,8,9]])
Я хочу, чтобы подвести первые два значения первой строки: 1+2 = 3
, затем следующие два значения: 3+4 = 7
, а затем 5+6 = 11
, и т. д. для каждой строки. Мой желаемый результат заключается в следующем:
array([[ 3, 7, 11],
[15, 19, 23],
[ 8, 13, 17]])
У меня есть следующее решение:
def sum_chunks(x, chunk_size):
rows, cols = x.shape
x = x.reshape(x.size/chunk_size, chunk_size)
return x.sum(axis=1).reshape(rows, cols/chunk_size)
Но он чувствует себя излишне сложным, есть лучший способ? Возможно, встроенный?
Спасибо, нарезка работает хорошо для «2» случая, но будет все еще быть хорошо для общего решения? – Akavall
Как бы вы это обобщили? Вы можете сделать 'np.sum ([a [:, i :: n] для i в xrange (n)], 0)', если вам, возможно, потребуется суммировать последовательные столбцы 'n', например. – nneonneo
Ваше решение короче и легче читать, но я приурочил его, и мои первоначальные решения значительно быстрее. – Akavall