2013-08-28 3 views
8

Я хочу вычислить интегральное изображение. напримерКак получить суммарную сумму массива numpy на месте

a=array([(1,2,3),(4,5,6)]) 
b = a.cumsum(axis=0) 

Это создаст еще один массив b.Can Выполнения cumsum на месте. Если не . Существуют ли какие-либо другие методы, чтобы сделать это

+0

Я не уверен, какое выходное значение вы ожидаете, если не массив. Не могли бы вы уточнить? – Lukasz

ответ

9

Вы должны передать аргумент out:

np.cumsum(a, axis=1, out=a) 

OBS: ваш массив фактически является 2- D, поэтому вы можете использовать axis=0 для суммирования по строкам и axis=1 для суммирования по столбцам.

+0

То же самое относится к a = np.cumsum (a, axis = 1). Как я могу подтвердить, что 'a' является исходным – Samuel

+0

@Samuel [в документации, в которой он указан] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.cumsum.html), что эта функция возвращает новый массив, но я не знаю, как проверить, является ли он одним и тем же объектом, для других объектов мы можем использовать 'hash()', но np.ndarrays не сотрясаются ... –

+1

Это может быть подтверждено адресом 'a.data'. Я подтвердил, что это на месте по-вашему, спасибо – Samuel

-4

Попробуйте это с помощью NumPy непосредственно numpy.cumsum(a):

a=array([(1,2,3)]) 
b = np.cumsum(a) 
print b 
>>array([1,3,6]) 
+0

cann't работать на моем компьютере. моя версия pyton 2.6.6 – Samuel

+0

Это неверно, здесь не изменяется. –

Смежные вопросы