如何将两个向量相乘并得到一个矩阵?

How to multiply two vector and get a matrix?

在 numpy 操作中,我有两个向量,假设向量 A 是 4X1,向量 B 是 1X5,如果我做 AXB,它应该得到一个大小为 4X5 的矩阵。

但我尝试了很多次,进行了多种重塑和转置,它们都引发错误提示未对齐或 return 单个值。

如何得到我想要的矩阵的输出结果?

只要向量具有正确的形状,普通矩阵乘法就可以工作。请记住,Numpy 中的 * 逐元素乘法 ,矩阵乘法可用于 numpy.dot()(或 @ 运算符,在 Python 3.5)

>>> numpy.dot(numpy.array([[1], [2]]), numpy.array([[3, 4]]))
array([[3, 4],
       [6, 8]])

这称为 "outer product." 您可以使用普通向量使用 numpy.outer():

>>> numpy.outer(numpy.array([1, 2]), numpy.array([3, 4]))
array([[3, 4],
       [6, 8]])

如果你使用的是 numpy。

首先,确保你有两个向量。例如,vec1.shape = (10, )vec2.shape = (26, );在numpy中,行向量和列向量是一样的。

其次,你res_matrix = vec1.reshape(10, 1) @ vec2.reshape(1, 26) ;

最后,你应该有:res_matrix.shape = (10, 26)

numpy 文档说它将弃用 np.matrix(),所以最好不要使用它。

函数matmul(自 numpy 1.10.1 起)工作正常:

import numpy as np

a = np.array([[1],[2],[3],[4]])
b = np.array([[1,1,1,1,1],])

ab = np.matmul(a, b)
print (ab)
print(ab.shape)

你必须正确声明你的载体。第一个必须是一个数字列表列表(此向量必须在一行中有列),第二个 - 列表列表(此向量必须在一列中有行)如上例所示。

输出:

[[1 1 1 1 1]
 [2 2 2 2 2]
 [3 3 3 3 3]
 [4 4 4 4 4]]

(4, 5)