很惊讶我找不到这个答案,但我希望基本上创建一个协方差矩阵,但不是每个值都是协方差,我希望每个单元格都是两个向量的乘积。如果我有一个1x5的向量,我想得到一个5x5的矩阵。例如:输入:
[1, 2, 3, 4, 5]
输出:
[[ 1, 2, 3, 4, 5], [ 2, 4, 6, 8, 10], [ 3, 6, 9, 12, 15], [ 4, 8, 12, 16, 20], [ 5, 10, 15, 20, 25]]
有没有一个快速的方法,而不建立一个循环?
g2ieeal71#
简单地使用numpy.outer。它计算两个向量的外积。
numpy.outer
a = np.array([1, 2, 3, 4, 5]) res = np.outer(a,a) print(res) array([[ 1, 2, 3, 4, 5], [ 2, 4, 6, 8, 10], [ 3, 6, 9, 12, 15], [ 4, 8, 12, 16, 20], [ 5, 10, 15, 20, 25]])
如果你对“广播”感兴趣,那么:
res = a[:,None]*a print(res) array([[ 1, 2, 3, 4, 5], [ 2, 4, 6, 8, 10], [ 3, 6, 9, 12, 15], [ 4, 8, 12, 16, 20], [ 5, 10, 15, 20, 25]])
1条答案
按热度按时间g2ieeal71#
简单地使用
numpy.outer
。它计算两个向量的外积。如果你对“广播”感兴趣,那么: