使用scipy中的tracedot执行一系列外部产品

div*_*ero 4 python numpy linear-algebra scipy

要在Python(scipy/numpy)中的两个向量之间执行外部产品,您可以使用外部函数,或者您可以简单地使用这样的点:

In [76]: dot(rand(2,1), rand(1,2))
Out[76]: 
array([[ 0.43427387,  0.5700558 ],
       [ 0.19121408,  0.2509999 ]])
Run Code Online (Sandbox Code Playgroud)

现在的问题是,假设我有一个向量列表(或两个列表......),我想计算所有外部产品,创建一个方形矩阵列表.我怎么这么容易?我相信蒂莫多能够做到这一点,但是怎么样?

pv.*_*pv. 5

计算外部产品的第三种(也是最容易概括的)方式是通过广播.

一些3向量(行上的向量):

import numpy as np
x = np.random.randn(100, 3)
y = np.random.randn(100, 3)
Run Code Online (Sandbox Code Playgroud)

外产品:

from numpy import newaxis
xy = x[:,:,newaxis] * y[:,newaxis,:]

# 10th matrix
print xy[10]
print np.outer(x[10,:], y[10,:])
Run Code Online (Sandbox Code Playgroud)