Python/Numpy - 两个数组中匹配行的叉积

标签 python numpy cross-product

取两个数组之间每个对应行的叉积的最佳方法是什么?例如:

a = 20x3 array
b = 20x3 array
c = 20x3 array = some_cross_function(a, b) where:
c[0] = np.cross(a[0], b[0])
c[1] = np.cross(a[1], b[1])
c[2] = np.cross(a[2], b[2])
...etc...

我知道这可以通过一个简单的 python 循环或使用 numpy 的 apply_along_axis 来完成,但我想知道是否有任何好的方法可以完全在 numpy 的底层 C 代码中完成此操作。我目前使用一个简单的循环,但这是迄今为止我代码中最慢的部分(我的实际数组有数万行长)。

最佳答案

当我意识到我的错误时,我可能不得不在几分钟内删除这个答案,但显而易见的事情不起作用吗?

>>> a = np.random.random((20,3))
>>> b = np.random.random((20,3))
>>> c = np.cross(a,b)
>>> c[0], np.cross(a[0], b[0])
(array([-0.02469147,  0.52341148, -0.65514102]), array([-0.02469147,  0.52341148, -0.65514102]))
>>> c[1], np.cross(a[1], b[1])
(array([-0.0733347 , -0.32691093,  0.40987079]), array([-0.0733347 , -0.32691093,  0.40987079]))
>>> all((c[i] == np.cross(a[i], b[i])).all() for i in range(len(c)))
True

关于Python/Numpy - 两个数组中匹配行的叉积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626375/

相关文章:

python - 使用 Python 将 ISO 8601 时间格式计算为小时/分钟

python - 如何让 Django 的 urls.py 查看数据库并从中获取 url?这是个好主意吗?

python - 带掩码的 numpy 赋值

java - 使用 Stream API 对两个集合进行叉积

python - Np.cross 产生错误的结果,寻找一个可行的替代方案

python - Matplotlib latex : Inconsistent Behaviour with Greek Letters (Specifically\rho)

python - NoReverseMatch Django 教程 1.8

python - Numpy Matrix 逆与 float128 类型

python - 使用 NumPy,从 1D 和 2D 函数创建 3D 数组,无需循环

perl - 在 Perl 中,如何获得多个集合的笛卡尔积?