经过一些研究,我无法成功使用Numpy的函数和来解决我的问题。我在这里给出一个非常基本的示例(我所针对的矩阵和索引列表一样庞大,这就是为什么我使用Numpy的原因):
我有一个矩阵
A = np.array([1,2,3,4],[5,6,7,8])
以及索引列表
L = [ 2, 3, 0 ]
我需要从中计算:
A[2][3] + A[3][0]
所以,更正式地说,我需要计算列表中A[i][i+1]
for的总和i
L
而且我需要尽快执行(因此,不允许循环)
最好的祝福
艾美
我能想到的最好的办法是重塑L
使用np.repeat
摆在首位
L = tuple(np.repeat(L,2)[1:-1].reshape(-1,2).T)
然后,使用此新功能L
,您可以直接进行求和
np.sum(A[L])
完整的例子
A = np.array([[1,2,3,4],[5,6,7,8]])
L = np.array([1,1,0])
L = tuple(np.repeat(L,2)[1:-1].reshape(-1,2).T)
np.sum(A[L])
一个更大的例子
A = np.random.randint(0,100,size=(929,929))
L = np.random.randint(0,928,size=928)
L = tuple(np.repeat(L,2)[1:-1].reshape(-1,2).T)
np.sum(A[L])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句