Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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_Numpy_Scipy - Fatal编程技术网

Python 有效:按轴对非对角线元素求和

Python 有效:按轴对非对角线元素求和,python,numpy,scipy,Python,Numpy,Scipy,我有一个矩阵,然后我需要在一些轴上求和,忽略对角线元素。这方面的有效方法是什么 例如,以 >>> transitionE array([[ 0.883, 0.117, 0. , 0. , 0. ], [ 0.045, 0.868, 0.087, 0. , 0. ], [ 0. , 0.063, 0.874, 0.063, 0. ], [ 0. , 0. , 0.087,

我有一个矩阵,然后我需要在一些轴上求和,忽略对角线元素。这方面的有效方法是什么

例如,以

>>> transitionE
array([[ 0.883,  0.117,  0.   ,  0.   ,  0.   ],
       [ 0.045,  0.868,  0.087,  0.   ,  0.   ],
       [ 0.   ,  0.063,  0.874,  0.063,  0.   ],
       [ 0.   ,  0.   ,  0.087,  0.868,  0.045],
       [ 0.   ,  0.   ,  0.   ,  0.117,  0.883]])
我现在正在做的是

>>> transitionE.sum(axis=1) - transitionE.diagonal()
array([ 0.117,  0.132,  0.126,  0.132,  0.117])

在某些单元格中,您不能依赖
0
s。有没有更有效的方法来执行此操作?

您能稍微澄清一下问题吗?为什么有些单元格包含
0
?您提出的解决方案-
arr.sum(axis=n)-arr.diagonal()
-从您的描述来看似乎是正确的。@DavidWolever抱歉,事实并非如此。我的意思是:“在本例中,一些单元格包含0。在其他单元格中,它们可能不包含0。请不要相信这里有一些0。”。是的,解决方案是有效的,我只是想知道是否有更有效的方法。我很抱歉,我太快按了回车键,没有完成评论。您提出的解决方案有什么问题?它似乎既正确又有效。我一时兴起,尝试使用a,它比你的解决方案慢了大约3倍。你的方法很有效。@roippi我不知道该怎么做。你可以回答这个问题,我会接受的,或者我可以把它全部删除。(如何知道是否存在更好的方法?)