2015-02-10 56 views
0

我想将numpy矩阵的列乘以一起。我遵循此question中给出的代码。将Numpy矩阵的列乘上的麻烦

这里是列的样子:

enter image description here

这是当我尝试乘以矩阵的两列在一起会发生什么。

enter image description here

也许问题是,列存储不同?其他问题中的某些打印输出没有存储在单独列表中的号码。

+2

如何定义'new_train_data'?它看起来不像香草二维数组。 – gboffi 2015-02-10 17:20:27

回答

3

With np.matrix, the * operator does matrix multiplication而不是单元乘法,这是我假设你正在尝试做的。

您得到一个ValueError,因为两个列向量未正确对齐矩阵乘法。它们的内部尺寸不匹配,因为它们的形状分别为(N, 1)(N, 1)。它们需要为(1, N),(N, 1)(对于内部产品)或(N, 1),(1, N)(对于外部产品)以便矩阵乘法工作。

如果你选择坚持使用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

那么在答案中,它使用numpy.dot将n * n与n相乘...适合我!

1

new_train_data显然是matrixndarray的子类)。它的*被定义为矩阵乘法(如np.dot),而不是正则numpy数组的逐个元素乘法。因此“对齐”错误消息。