我试图将numpy矩阵的列相乘。我已按照此question中给出的代码进行操作。
以下是该列的内容:
当我尝试将矩阵的两列相乘时会发生什么。
也许问题是列的存储方式不同?其他问题中的一些打印输出没有将数字存储在单独的列表中。
答案 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
显然是matrix
(ndarray
的子类)。其*
被定义为矩阵乘法(如np.dot
),而不是常规numpy数组的元素乘法元素。因此,&#39;对齐&#39;错误信息。
答案 2 :(得分:-1)
在答案中,它使用numpy.dot将n * n乘以n ...对我有用!