suppose have array a = array([a0, a1,..., an]). every element in array, need find cumulative sums in direction left right. thus, n=2 have find
a0, a0+a1, a0+a1+a2, a1, a1+a2, a2.
the obvious approach following:
list_of_sums = [np.cumsum(a[i:]) in xrange(n+1)] i wonder if there exists more efficient way this. issue n may quite large , in addition want broadcast many different arrays a of same length. unfortunately, did not succeed create vectorized function this.
another problem how store these sums. instead of using list, can represent data 2d array a, in first column a[:,0] have sums a0 first term, in second column a[:,1] have sums a1 first term, , on. gives (n+1)x(n+1) matrix, half elements of zeros (the right lower triangle). on other hand, requires in 2 times more memory list use, or force use sparse matrices may overkill.
Comments
Post a Comment