Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numpy中的2个数组创建矩阵_Python_Arrays_Numpy_Matrix - Fatal编程技术网

Python 使用numpy中的2个数组创建矩阵

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

我想在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.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]])