【发布时间】:2014-01-21 10:10:53
【问题描述】:
嗨,我在这里比较新,正在尝试用 numpy 进行一些计算。我从一个特定的计算中经历了很长的时间,无法找到更快的方法来实现同样的目标。
基本上它是射线三角形相交算法的一部分,我需要从两个不同大小的矩阵中计算所有矢量 cros 产品。
我使用的代码是:
allhvals1 = numpy.cross( dirvectors[:,None,:], trivectors2[None,:,:] )
其中dirvectors 是n* vectors (xyz) 的数组,trivectors2 是m*vectors(xyz) 的数组。 allhvals1 是大小为 n*M*vector (xyz) 的叉积数组。
这有效,但速度很慢。它本质上是每个数组中每个向量的 n*m 矩阵。希望你能理解。每个的大小从大约 1 到 4000 不等,具体取决于参数(我基本上根据大小对 dirvector 进行分块)。
任何建议表示赞赏。不幸的是,我的矩阵数学有点古怪。
【问题讨论】:
-
不是那个人,但是,这不是一个论坛 :) 我提到它是因为有太多人把这个网站当作一个论坛。不过你的问题没有错。
-
可能大部分时间都花在提取向量上,而不是在叉积上。我会在做产品之前尝试将它们提取到变量中。然后我会使用this technique 来获得更好的洞察力。
标签: python performance numpy outer-join