Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数组中每个元素到结尾的累积和_Python_Arrays_Algorithm_Numpy_Cumsum - Fatal编程技术网

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
array
A
,其中在第一列
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