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)
现在的问题是,假设我有一个向量列表(或两个列表......),我想计算所有外部产品,创建一个方形矩阵列表.我怎么这么容易?我相信蒂莫多能够做到这一点,但是怎么样?
计算外部产品的第三种(也是最容易概括的)方式是通过广播.
一些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)