Hãy nói rằng tôi có các mảng sau:tổng bộ phận của numpy.array
a = np.array([[1,2,3,4,5,6],
[7,8,9,10,11,12],
[3,5,6,7,8,9]])
Tôi muốn tổng hợp hai giá trị đầu tiên của dòng đầu tiên: 1+2 = 3
, sau đó hai giá trị tiếp theo: 3+4 = 7
, và sau đó 5+6 = 11
, và cứ tiếp tục cho mỗi hàng. đầu ra mong muốn của tôi là thế này:
array([[ 3, 7, 11],
[15, 19, 23],
[ 8, 13, 17]])
tôi có giải pháp sau đây:
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)
Nhưng nó cảm thấy quá phức tạp, là có một cách tốt hơn? Có lẽ một built-in?
Cảm ơn bạn, cắt hoạt động tốt cho trường hợp "2", nhưng nó vẫn sẽ là tốt đẹp cho một giải pháp chung? – Akavall
Bạn sẽ khái quát hóa điều này như thế nào? Bạn có thể làm 'np.sum ([a [:, i :: n] cho i trong xrange (n)], 0)' nếu bạn có thể cần tổng các cột liên tiếp 'n', ví dụ. – nneonneo
Giải pháp của bạn ngắn hơn và dễ đọc hơn, nhưng tôi đã hẹn giờ và giải pháp ban đầu của tôi nhanh hơn đáng kể. – Akavall