编程语言
首页 > 编程语言> > python – numpy中的快速外张量积

python – numpy中的快速外张量积

作者:互联网

我有两个numpy数组:

x of shape ((d1,...,d_m)) 
y of shape ((e_1,...e_n)) 

我想形成外张量产品,即numpy数组

z of shape ((d1,...,d_m,e_1,...,e_n))

这样的

z[i_1,...,i_n,i_{n+1}...,i_{m+n}] == x[i_1,...i_m]*y[i_{m+1},...,i_{m+n}]

我必须多次执行上面的外部乘法,所以我想尽可能加快速度.

解决方法:

外部的替代方法是明确扩展尺寸.对于1d阵列,这将是

x[:,None]*y   # y[None,:] is automatic.

对于10×10阵列,并推广尺寸扩展,我得到相同的时间

In [74]: timeit x[[slice(None)]*x.ndim + [None]*y.ndim] * y
10000 loops, best of 3: 53.6 µs per loop

In [75]: timeit np.multiply.outer(x,y)
10000 loops, best of 3: 52.6 µs per loop

所以外部确实节省了一些编码,但基本的广播乘法是相同的.

标签:python,arrays,numpy,linear-algebra
来源: https://codeday.me/bug/20190925/1816738.html