5

2つの配列間の対応する各行の外積を取るための最良の方法は何ですか?例えば:

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コード内で実行する良い方法があるかどうか疑問に思っています。私は現在単純なループを使用していますが、これは私のコードの中ではるかに遅い部分です(私の実際の配列は数万行の長さです)。

4

1 に答える 1

5

間違いに気付いたとき、おそらく数分でこの回答を削除する必要がありますが、明らかなことは機能しませんか?

>>> 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
于 2013-03-25T23:05:49.943 に答える