用python和numpy创建三阶张量

时间:2015-05-19 11:20:20

标签: python arrays numpy matrix

我有两个1维数组,anp.shape(a) == (n,)bnp.shape(b) == (m,)

希望通过执行c来制作(第3项)张量np.shape(c) == (n,n,m,)c = np.outer(np.outer(a,a),b)

但是当我这样做时,我得到了:

>> np.shape(c) 

(n*n,m)   

这只是一个矩形矩阵。如何制作出我想要的3D张量?

1 个答案:

答案 0 :(得分:2)

您可以使用np.multiply.outer代替np.outer来获取所需的外部产品:

>>> a = np.arange(4)
>>> b = np.ones(5)
>>> mo = np.multiply.outer

然后我们有:

>>> mo(mo(a, a), b).shape
(4, 4, 5)

更好的方法是使用np.einsum(这可以避免创建中间数组):

>>> c = np.einsum('i,j,k->ijk', a, a, b)
>>> c.shape
(4, 4, 5)