如何在Python中的矩阵之间逐个元素地相乘?

时间:2016-06-22 16:35:29

标签: python numpy matrix

假设我有2个矩阵,每个矩阵代表向量:

X = np.matrix([[1],[2],[3]])
Y = np.matrix([[4],[5],[6]])

我希望输出是元素乘以它的结果,这意味着它应该是:

[[4],[10],[18]]

请注意,它是np.matrix,而不是np.array

2 个答案:

答案 0 :(得分:3)

在ipython上测试了 np.multiply(),它就像魅力一样

In [41]: X = np.matrix([[1],[2],[3]])

In [42]: Y = np.matrix([[4],[5],[6]])

In [43]: np.multiply(X, Y)

Out[43]: 
matrix([[ 4],
        [10],
        [18]])

答案 1 :(得分:1)

所以请记住,NumPy矩阵是NumPy数组的子类,并且数组操作是逐个元素的。

因此,您可以将矩阵转换为NumPy数组,然后将它们与" *"相乘。运算符,它将是元素的:

>>> import numpy as NP
>>> X = NP.matrix([[1],[2],[3]])
>>> Y = NP.matrix([[4],[5],[6]])

>>> X1 = NP.array(X)
>>> Y1 = NP.array(Y)

>>> XY1 = X1 * Y1
     array([[ 4],
            [10],
            [18]])

>>> XY = matrix(XY1)
>>> XY
 matrix([[ 4],
         [10],
         [18]])

或者你可以使用泛型函数进行逐元素乘法:

>>> a = NP.matrix("4 5 7; 9 3 2; 3 9 1")
>>> b = NP.matrix("5 2 9; 8 4 2; 1 7 4")

>>> ab = NP.multiply(a, b)
>>> ab
  matrix([[20, 10, 63],
          [72, 12,  4],
          [ 3, 63,  4]])

这两个在返回类型上有所不同,因此如果数据流中的下一个函数需要NumPy数组,您可能希望选择第一个;如果它需要NumPy矩阵,那么第二个