麻烦乘以Numpy矩阵的列

时间:2015-02-10 17:00:16

标签: python numpy matrix

我试图将numpy矩阵的列相乘。我已按照此question中给出的代码进行操作。

以下是该列的内容:

enter image description here

当我尝试将矩阵的两列相乘时会发生什么。

enter image description here

也许问题是列的存储方式不同?其他问题中的一些打印输出没有将数字存储在单独的列表中。

3 个答案:

答案 0 :(得分:3)

With np.matrix, the * operator does matrix multiplication而非元素乘法,这是我假设你要做的。

你得到一个ValueError,因为两个列向量没有正确对齐矩阵乘法。它们的内部尺寸不匹配,因为它们的形状分别为(N, 1)(N, 1)。他们需要(1, N)(N, 1)(对于内部产品)或(N, 1)(1, N)(对于外部产品)才能使矩阵乘法起作用。< / p>

如果您选择坚持使用np.matrix来保存数据,则可以使用np.multiply()函数进行逐元素乘法:

result = np.multiply(new_train_data[:, 0], new_train_data[:, 1])

但是,我建议您将来使用np.array代替np.matrix。使用np.array *运算符执行逐元素乘法,np.dot()函数(或数组的.dot()方法)执行矩阵乘法。

答案 1 :(得分:1)

new_train_data显然是matrixndarray的子类)。其*被定义为矩阵乘法(如np.dot),而不是常规numpy数组的元素乘法元素。因此,&#39;对齐&#39;错误信息。

答案 2 :(得分:-1)

在答案中,它使用numpy.dot将n * n乘以n ...对我有用!