我想将numpy矩阵的列乘以一起。我遵循此question中给出的代码。将Numpy矩阵的列乘上的麻烦
这里是列的样子:
这是当我尝试乘以矩阵的两列在一起会发生什么。
也许问题是,列存储不同?其他问题中的某些打印输出没有存储在单独列表中的号码。
我想将numpy矩阵的列乘以一起。我遵循此question中给出的代码。将Numpy矩阵的列乘上的麻烦
这里是列的样子:
这是当我尝试乘以矩阵的两列在一起会发生什么。
也许问题是,列存储不同?其他问题中的某些打印输出没有存储在单独列表中的号码。
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()
方法)执行矩阵乘法。
那么在答案中,它使用numpy.dot将n * n与n相乘...适合我!
new_train_data
显然是matrix
(ndarray
的子类)。它的*
被定义为矩阵乘法(如np.dot
),而不是正则numpy数组的逐个元素乘法。因此“对齐”错误消息。
如何定义'new_train_data'?它看起来不像香草二维数组。 – gboffi 2015-02-10 17:20:27