外積
Numpyで外積を計算する方法をまとめておく。
ベクトル(1次元配列)同士の外積、つまり
c[i,j] = a[i]b[j]
はnumpy.outerを使って、
http://docs.scipy.org/doc/numpy/reference/generated/numpy.outer.html
import numpy as np a = np.ones(3) b = np.arange(2) print np.outer(a,b)
とできる。
高次元配列の外積は
numpy.multiply.outer もしくは numpy.einsumを使うといい。
numpy.multiply.outerはmultiplyの部分を別の演算子に変更することも出来る。
参考:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.outer.html
http://docs.scipy.org/doc/numpy/reference/generated/numpy.einsum.html
http://stackoverflow.com/questions/24839481/python-matrix-outer-product
例:c[i,j,k] = a[i]b[j,k]
a = np.ones(2) b = np.arange(12).reshape((3,4)) print a.shape, b.shape print np.multiply.outer(a,b).shape print np.outer(a,b).reshape(2,3,4).shape print np.einsum('a,bc->abc',a,b).shape
(2,) (3, 4)
(2, 3, 4)
(2, 3, 4)
(2, 3, 4)