如何使用numpy加速Python代码?
如何使用numpy加速Python代码?,python,performance,numpy,Python,Performance,Numpy,original和Mutated是图像。 我需要分别得到每个r,g,b的差。我让这个代码工作,但它是缓慢的。如果能帮上忙,那就太好了!:) 如果您不进行额外的压缩,然后对每个维度进行求和,而不是使用numpy的求和函数,那么速度应该会快得多: DeltaRed = np.sum(OR) - np.sum(MR) DeltaGreen = np.sum(OG) - np.sum(MG) DeltaBlue = np.sum(OB) - np.sum(MB) 如果您不进行额外的压缩,然后对每个
original
和Mutated
是图像。
我需要分别得到每个r,g,b的差。我让这个代码工作,但它是缓慢的。如果能帮上忙,那就太好了!:)
如果您不进行额外的压缩,然后对每个维度进行求和,而不是使用numpy的求和函数,那么速度应该会快得多:
DeltaRed = np.sum(OR) - np.sum(MR)
DeltaGreen = np.sum(OG) - np.sum(MG)
DeltaBlue = np.sum(OB) - np.sum(MB)
如果您不进行额外的压缩,然后对每个维度进行求和,而不是使用numpy的求和函数,那么速度应该会快得多:
DeltaRed = np.sum(OR) - np.sum(MR)
DeltaGreen = np.sum(OG) - np.sum(MG)
DeltaBlue = np.sum(OB) - np.sum(MB)
这里有一种方法可以在一次求和中使用- 下面是另一个,当使用
uint8
图像时,希望更快-
org_diff = np.einsum('ijk->k',Orginal.astype('uint64'))
mut_diff = np.einsum('ijk->k',Mutated.astype('uint64'))
DeltaRed, DeltaGreen, DeltaBlue = org_diff - mut_diff
这里有一种方法可以在一次求和中使用- 下面是另一个,当使用
uint8
图像时,希望更快-
org_diff = np.einsum('ijk->k',Orginal.astype('uint64'))
mut_diff = np.einsum('ijk->k',Mutated.astype('uint64'))
DeltaRed, DeltaGreen, DeltaBlue = org_diff - mut_diff
这就是从一开始就有效的代码
Fittnes = 0
for x in range(0, 299):
for y in range(0, 299):
DeltaRed = (Orginal[x][y][0] - Mutated[x][y][0])
DeltaGreen = (Orginal[x][y][1] - Mutated[x][y][1])
DeltaBlue = (Orginal[x][y][2] - Mutated[x][y][2])
Fittnes += (DeltaRed * DeltaRed + DeltaGreen * DeltaGreen + DeltaBlue * DeltaBlue)
return Fittnes
这就是从一开始就有效的代码
Fittnes = 0
for x in range(0, 299):
for y in range(0, 299):
DeltaRed = (Orginal[x][y][0] - Mutated[x][y][0])
DeltaGreen = (Orginal[x][y][1] - Mutated[x][y][1])
DeltaBlue = (Orginal[x][y][2] - Mutated[x][y][2])
Fittnes += (DeltaRed * DeltaRed + DeltaGreen * DeltaGreen + DeltaBlue * DeltaBlue)
return Fittnes
你想重做python部分吗?因为有一种方法可以加速numpy本身,所以使用intel MKL可以获得更好的代码。任何更好的解决办法都是helpfull@SeverinPappadeuxMKL仅与线性代数运算相关,例如矩阵积。简单的矢量化减法和求和由numpy的内部而不是外部库处理?因为有一种方法可以加速numpy本身,所以使用intel MKL可以获得更好的代码。任何更好的解决办法都是helpfull@SeverinPappadeuxMKL仅与线性代数运算相关,例如矩阵积。简单的矢量化减法和求和是由numpy的内部库而不是外部库处理的。有什么方法可以进一步改进它吗?在我的电脑上,这至少可以使速度提高100倍。除此之外,我还必须了解您的特定用例。如果你对整个图像进行总结,所有额外的改进都会很小。有什么方法可以进一步改进吗?在我的电脑上,这至少可以让你的速度提高100倍。除此之外,我还必须了解您的特定用例。如果你对整个图像进行汇总,所有额外的改进都会很小。这会得到总的RGB变化,我需要他们计算每个像素的RGB差异,并得到所有像素组合的总RGB变化。@Funktiona`RGB difference for each pixel`将是
原始-变异的
,对吗?所有像素组合的总RGB变化将如解决方案中所列?请看下面的“我的代码”。他们做的和你的不一样solutions@Funktiona原始和变异的数据类型是什么?它们都是numpy。一旦获得总RGB变化,我需要它们计算每个像素的RGB差异,并获得所有像素组合的总RGB变化。@Funktiona“每个像素的RGB差异”将是原始变异的,对吗?所有像素组合的总RGB变化将如解决方案中所列?请看下面的“我的代码”。他们做的和你的不一样solutions@Funktiona原始和变异的数据类型是什么?它们是numpy.asarray