“哪个更快,NumPy的转置还是翻转指数?”

2024-05-29 09:49:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个动态规划算法(modified Needleman-Wunsch),它需要两次相同的基本计算,但是第二次计算是在正交方向上进行的。例如,从matrixscoreMatrix中的给定单元格(i,j),我既要从(i,j)的值“向上”计算值,也要从值到(i,j)的“左”值计算值。为了重用代码,我使用了一个函数,在第一种情况下,我发送参数I,j,scoreMatrix,在下一种情况下,我发送j,I,记分矩阵.转置()。以下是该代码的高度简化版本:

def calculateGapCost(i,j,scoreMatrix,gapcost):
  return scoreMatrix[i-1,j] - gapcost

...
gapLeft = calculateGapCost(i,j,scoreMatrix,gapcost)
gapUp = calculateGapCost(j,i,scoreMatrix.transpose(),gapcost)
...

我意识到我可以另外发送一个函数,在一种情况下,当从scoreMatrix中检索一个值时,它会传递参数(I,j),而在另一种情况下,它会将它们反转为(j,I),而不是每次都转置矩阵。在

^{pr2}$

然而,如果numpy转置使用了一些我不知道的特性来在几个操作中进行转置,那么可能是转置实际上比我的传递函数思想更快。谁能告诉我哪种更快(或者是否有更好的方法我没有想到)?在

实际的方法将调用3次retrieveValue3次,并涉及两个将被引用的矩阵(如果使用该方法,则会进行转置)。在


Tags: 方法函数代码算法参数情况动态矩阵
1条回答
网友
1楼 · 发布于 2024-05-29 09:49:42

在NumPy中,transpose返回一个具有不同形状和strides的视图。它不接触数据。在

因此,您可能会发现这两种方法具有相同的性能,因为它们本质上完全相同。在

然而,唯一确定的方法是对两者进行基准测试。在

相关问题 更多 >

    热门问题