【问题标题】:how to multiply 2 matrices (Python)如何将两个矩阵相乘(Python)
【发布时间】:2014-03-18 02:02:41
【问题描述】:

谁能帮我解决这个问题?我相信这很容易,但我不知道该怎么做?

用元素1,2,3,4,52,3,4,5,6 创建两个矩阵,矩阵是 相乘。

我有这个,但我不知道如何将它们相乘:

import numpy as np
a=np.arange(5).reshape(1,5)
b=np.arange(6).reshape(1,6)
print a
print b

感谢您的帮助。

【问题讨论】:

  • 您想要逐元素乘法、内积、外积吗?您的代码与您的描述不符。
  • 无法完成,因为矩阵 1 有 5 列,矩阵 2 有 1 行。除非你在乘法之前转置第二个矩阵。

标签: python numpy matrix multiplication


【解决方案1】:

如果您需要数学矩阵乘法(点积),请使用numpy.dot(请参阅链接后面的示例)。请注意,对于numpy.dot,数组的形状是 (5,1) 还是 (1,5) 很重要。您可以使用 a.T 转置您的数组。

【讨论】:

  • 由于 OP 已经在塑造阵列,他们可以 reshape(5, 1) 其中一个
【解决方案2】:

我认为你的问题是你的数组不是你认为的那样:

>>> np.arange(5).reshape(1, 5)
array([[0, 1, 2, 3, 4]])
>>> np.arange(6).reshape(1, 6)
array([[0, 1, 2, 3, 4, 5]])

相反,您可能想要:

>>> np.arange(1, 6).reshape(1, 5)
array([[1, 2, 3, 4, 5]])
>>> np.arange(2, 7).reshape(1, 5)
array([[2, 3, 4, 5, 6]])

然后您可以直接将它们相乘:

>>> a = np.arange(1, 6).reshape(1, 5)
>>> b = np.arange(2, 7).reshape(1, 5)
>>> a*b
array([[ 2,  6, 12, 20, 30]])

注意这是针对元素乘法的。点积见leeladam的回答。

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 2015-04-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多