Python 有计算部分和的NumPy函数吗?
给定一个一维数组,Python 有计算部分和的NumPy函数吗?,python,python-3.x,numpy,Python,Python 3.x,Numpy,给定一个一维数组,a和一个n唯一和排序索引列表idx,我想计算a[idx[I]:idx[I+1]对I=0到n-1的总和。基于for的解决方案是: S = [A[idx[i]:idx[i + 1]].sum() for i in range(n - 1)] 但我认为如果n像Python级别那样大,那么这将非常缓慢。是否有NumPy函数可以实现这一点(希望更快)?您正在寻找以下方法: [:-1]只是用来删除reduceat所附加的最后一个元素,该元素的总和是从idx[-1]到A.size准备好后,
a
和一个n
唯一和排序索引列表idx
,我想计算a[idx[I]:idx[I+1]
对I=0
到n-1
的总和。基于for的解决方案是:
S = [A[idx[i]:idx[i + 1]].sum() for i in range(n - 1)]
但我认为如果n
像Python级别那样大,那么这将非常缓慢。是否有NumPy函数可以实现这一点(希望更快)?您正在寻找以下方法:
[:-1]
只是用来删除reduceat
所附加的最后一个元素,该元素的总和是从idx[-1]
到A.size
准备好后,考虑选择并向上投票一个答案。我注意到你有很多问题的答案都很好,但你没有选择答案。选择一个答案不仅会略微提高你的声誉,而且会将问题从未回答的队列中移除。您可以随时更改选择。谢谢您的提醒。我刚刚整理了我以前的问题。谢谢!我不知道这种方法。但是,我认为人们应该注意这个案例idx[-1]==len(A)
。(它在reducecat
中引发索引器
),因此可能需要单独处理此特殊情况。
np.add.reduceat(A, idx)[:-1]