【问题标题】:All pairwise cross products of the rows of two matrices两个矩阵行的所有成对叉积
【发布时间】:2021-04-22 00:15:50
【问题描述】:

我想有效地计算大小为 nx3 和 mx3 的两个矩阵 A 和 B 的行的所有成对叉积。并且理想情况下希望以 einsum 表示法实现这一点。

即输出矩阵 C,将是 (n X m x 3),

在哪里

C[0][0] = 交叉(n[0],m[0])

C[0][1] = 交叉(n[0],m[1])

...

C[1][0] = 交叉(n[1],m[0])

...

由于我采用的方法,不能使用 for 循环。

任何帮助将不胜感激。

【问题讨论】:

  • for loops aren't an option -- 你得解释一下,因为从表面上看,这是无稽之谈。
  • cross 对其输入有何看法?我知道它可以与一对 (n,3) 数组一起使用
  • 可以以这种方式使用 einsum 进行单个叉积,stackoverflow.com/questions/39662540/…,我认为有一种方法可以调整它以成对完成所有操作。我已经设法完成了所有成对的点积,例如n1_dot_n2 = jnp.einsum('ji,ki-> jk', n1, n2),因此我认为对 einsum 叉积进行了一些调整以达到同样的效果?
  • 看起来cross 广播了领先的维度。 np.cross(A[:, None,:], B[None, :,:]) 源代码在文档中很容易找到。
  • 完美。谢谢。

标签: python numpy math jax


【解决方案1】:

看起来像交叉广播领先的维度。

np.cross(A[:, None,:], B[None, :,:])

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多