Python中多维数组cumsum逆运算的实现方法
Python中多维数组累积求和(cumsum)的逆运算实现
我想了解如何在Python中对多维数组执行累积求和(cumsum)的逆运算。
例如,我们可以通过以下代码得到二维数组T的累积数组P:
import numpy as np T = np.array([[1,3,2],[5,5,6],[1,8,3]]) P = np.cumsum(np.cumsum(T, axis=0), axis=1) print(P) # P的结果为: # [[1, 4, 6], # [6,14,22], # [7,23,34]]
我的问题是:如何从P还原出T?我需要实现一种适用于任意维度数组的还原方法。
已知Julia语言有对应的实现方案,现寻求Python的实现方式。
补充说明
感谢各位的优质解答,我已对两种推荐方法的计算成本进行对比,二者效率均表现出色:
T = np.random.randint(100, size=[100,50,25,50]) %timeit cumdiff(T) #319 ms ± 134 μs per loop (mean ± std. dev. of 7 runs, 1 loop each) %timeit decumsum(T) #324 ms ± 943 μs per loop (mean ± std. dev. of 7 runs, 1 loop each)
内容的提问来源于stack exchange,提问作者Sakurai.JJ
相关产品推荐
相关产品推荐

