在numpy中创建包含2个数组的矩阵

时间:2014-10-14 21:32:56

标签: python arrays numpy matrix

我想在numpy中为列向量找到一个命令,行向量等于矩阵

[1,1,1,1] ^ T * [2,3] = [[2,3],[2,3],[2,3],[2,3]]

4 个答案:

答案 0 :(得分:5)

首先,让我们定义你的1-D 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输出矩阵。

答案 1 :(得分:0)

你遇到的问题是你的两个向量既不是列向量也不是行向量 - 它们只是向量。如果你看len(vec.shape) 1

您可以使用numpy.reshape将列向量转换为(m, 1)形状,将行向量转换为(1, n)形状。

import numpy as np

colu = np.reshape(u, (u.shape[0], 1))
rowv = np.reshape(v, (1, v.shape[0]))

现在,当您将colurowv相乘时,您将获得一个形状为(m, n)的矩阵。

答案 2 :(得分:0)

如果您需要矩阵 - 请使用矩阵。这样你几乎可以逐字地使用你的表达式:

np.matrix([1,1,1,1]).T * np.matrix([2,3])

答案 3 :(得分:0)

您可能希望使用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]])

希望这会对你有所帮助。