【发布时间】:2011-07-20 16:09:23
【问题描述】:
我正在使用 NumPy 通过大盒子和小盒子之间的 Aperture 来计算 Y 截距。我在大盒子里有超过 100.000 个粒子,在小盒子里有大约 1000 个。这样做需要很多时间。所有 self.YD、self.XD 都是我要相乘的非常大的数组。
PS:ind 是需要相乘的值的索引。在我的代码中该行之前我有一个非零条件。
有什么想法可以用更简单的方式进行计算吗?
YD_zero = self.oldYD[ind] - ((self.oldYD[ind]-self.YD[ind]) * self.oldXD[ind])/(self.oldXD[ind]-self.XD[ind])
谢谢!
更新
将使用 Numpy 的乘法、除法、减法和所有这些东西。让它更快? 或者,如果我拆分计算。例如。
首先这样做:
YD_zero = self.oldYD[ind] - ((self.oldYD[ind]-self.YD[ind])*self.oldXD[ind])
然后下一行将是:
YD_zero /= (self.oldXD[ind]-self.XD[ind])
有什么建议吗?!
更新 2
一段时间以来,我一直在尝试解决这个问题,但进展不大。我担心的是分母:
self.oldXL[ind]-self.XL[ind] == 0
我得到了一些奇怪的结果。
另一件事是非零函数。我已经测试了一段时间了。谁能告诉我这和在 Matlab 中的 find 几乎一样
【问题讨论】:
-
如果您尝试修剪点集,精度损失是否显着?
-
我需要非常准确的数据。
-
更简单的意思是CPU周期更少?
-
我在 while 循环中有这个,并且一次运行至少 16000 次。所以,无论怎样能让这个计算更快。
标签: python matlab numpy bug-tracking