【发布时间】:2017-02-08 16:41:30
【问题描述】:
假设有两个向量,m x 6,n x 6
import numpy as np
a = np.random.random(m,6)
b = np.random.random(n,6)
使用 np.inner 按预期工作并产生
np.inner(a,b).shape
(m,n)
每个元素都是每个组合的标量积。我现在想计算一个特殊的内积(即 Plucker)。现在我正在使用
def pluckerSide(a,b):
a0,a1,a2,a3,a4,a5 = a
b0,b1,b2,b3,b4,b5 = b
return a0*b4+a1*b5+a2*b3+a4*b0+a5*b1+a3*b2
a,b 被 for 循环分割。这太慢了。任何矢量化计划都失败了。主要是由于形状错误导致的广播错误。也不能让 np.vectorize 工作。 也许有人可以在这里提供帮助?
【问题讨论】:
-
所以,
pluckerSide中的a是原始输入数组a中的每一行吗?同样适用于b?您能否分享生成a和b的循环代码,您将这些代码输入pluckerSide(a,b)? -
a,b 是 Plucker 空间中的 Lines,一个 6 空间表示几何线条。所以 a 或 b 中的每一行都是 3d 中的一行。 pluckerside 计算这 2 条线的内积,给出它们在空间中彼此通过的哪一侧的信息(或者如果它们相交,它的 ==0)
标签: python numpy vector vectorization