Python 数组中每个元素到结尾的累积和
假设我有一个数组Python 数组中每个元素到结尾的累积和,python,arrays,algorithm,numpy,cumsum,Python,Arrays,Algorithm,Numpy,Cumsum,假设我有一个数组a=array([a0,a1,…,an])。对于数组中的每个元素,我需要找到从左到右方向上的所有累积和。因此,对于n=2,我必须找到 a0、a0+a1、a0+a1+a2、a1、a1+a2、a2 显而易见的方法如下: list_of_sums = [np.cumsum(a[i:]) for i in xrange(n+1)] 我想知道是否有更有效的方法来做到这一点。问题是n可能相当大,此外,我想为许多相同长度的不同阵列a广播这一点。不幸的是,我没有成功地为此创建向量化函数 另一个
a=array([a0,a1,…,an])
。对于数组中的每个元素,我需要找到从左到右方向上的所有累积和。因此,对于n=2
,我必须找到
a0、a0+a1、a0+a1+a2、a1、a1+a2、a2
显而易见的方法如下:
list_of_sums = [np.cumsum(a[i:]) for i in xrange(n+1)]
我想知道是否有更有效的方法来做到这一点。问题是n
可能相当大,此外,我想为许多相同长度的不同阵列a
广播这一点。不幸的是,我没有成功地为此创建向量化函数
另一个问题是如何存储所有这些总和。不使用列表,我们可以将所有数据表示为
2D
arrayA
,其中在第一列A[:,0]
中,我将所有与a0
作为第一项的和,在第二列A[:,1]
中,我将所有与a1
作为第一项的和,依此类推。这就给出了(n+1)x(n+1)
矩阵,其中一半元素是零(右下三角形)。另一方面,这需要比列表使用多2倍的内存,或者迫使我们使用稀疏矩阵,这可能是多余的。您是否尝试使用np.cumsum的axis参数对许多数组进行矢量化?存储结果似乎是最大的问题。我尝试的任何操作都会导致机器挂起以获取大阵列和大容量数据n@M4rtini当然,对于许多数组,我使用了带有axis参数的np.cumsum
。您是否尝试过使用np.cumsum的axis参数对许多数组进行矢量化?存储结果似乎是最大的问题。我尝试的任何操作都会导致机器挂起以获取大阵列和大容量数据n@M4rtini当然,对于许多数组,我使用了带有axis参数的np.cumsum
。