Python 使用numpy中的2个数组创建矩阵
我想在numpy中找到一个列向量乘以行向量等于矩阵的命令Python 使用numpy中的2个数组创建矩阵,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我想在numpy中找到一个列向量乘以行向量等于矩阵的命令 [1,1,1,1]^T*[2,3]=[2,3],[2,3],[2,3],[2,3],[2,3]您遇到的问题是,两个向量既不是列向量,也不是行向量-它们只是向量。如果你看len(vec.shape)它是1 您可以使用将列向量转换为shape(m,1),将行向量转换为shape(1,n) 现在,当您将colu和rowv相乘时,您将得到一个具有形状(m,n)的矩阵。首先,让我们定义您的一维numpy数组: In [5]: one = np.ar
[1,1,1,1]^T*[2,3]=[2,3],[2,3],[2,3],[2,3],[2,3]您遇到的问题是,两个向量既不是列向量,也不是行向量-它们只是向量。如果你看
len(vec.shape)
它是1
您可以使用将列向量转换为shape(m,1)
,将行向量转换为shape(1,n)
现在,当您将
colu
和rowv
相乘时,您将得到一个具有形状(m,n)
的矩阵。首先,让我们定义您的一维numpy数组:
In [5]: one = np.array([ 1,1,1,1 ]); two = np.array([ 2,3 ])
现在,让我们将它们相乘:
In [6]: one[:, np.newaxis] * two[np.newaxis, :]
Out[6]:
array([[2, 3],
[2, 3],
[2, 3],
[2, 3]])
这使用numpy的
newaxis
添加适当的轴以获得4x2输出矩阵。如果需要矩阵,请使用矩阵。这样,您可以几乎一字不差地使用表达式:
np.matrix([1,1,1,1]).T * np.matrix([2,3])
您可能需要使用
numpy.kron(a,b)
它使用两个数组的Kronecker乘积。可以将b向量视为块。该函数将该块乘以向量的相应系数,放在该系数的位置上。也可以将其用于矩阵。
对于您的示例,它看起来像:
import numpy as np
vecA = np.array([[1],[1],[1],[1]])
vecB = np.array([2,3])
Out = np.kron(vecA,vecB)
这是回报
>>> Out
array([[2, 3],
[2, 3],
[2, 3],
[2, 3]])
希望这能对您有所帮助。在我的计时中,这比提摩西希尔兹的方法+1快。这与
np.outer(一,二)
使用的方法相同。非常感谢,这正是我想要的表达式
>>> Out
array([[2, 3],
[2, 3],
[2, 3],
[2, 3]])