【问题标题】:matlab array multiplication to pythonmatlab数组乘法到python
【发布时间】:2014-01-17 06:44:21
【问题描述】:

我有 2 个 numpy 数组

[a] = [[1] [2] [3]]
[b] = [[4] [5] [6]]

我想将 matlab 行转换为 python

A = a*b';

我将如何在 python 中执行此操作以及 ' 在 matlab 中表示什么?

【问题讨论】:

标签: python matlab numpy


【解决方案1】:

使用numpy.dot:

In [7]: a=np.array([1,2,3])

In [8]: b=np.array([4,5,6,])

In [9]: a.dot(b)
Out[9]: 32

如果您希望结果仍然是矩阵,请使用numpy.matrix

In [239]: ma=matrix([1,2,3])

In [240]: ma
Out[240]: matrix([[1, 2, 3]])

In [241]: mb=matrix([4,5,6])

In [242]: mb.T
Out[242]: 
matrix([[4],
        [5],
        [6]])

In [243]: ma*mb.T
Out[243]: matrix([[32]])

更新

如果您的数组是二维数组,当您打印 a.shape 时其形状为 (m, n),您应该使用 .T 转置第二个数组,否则您会得到 ValueError: objects are not aligned

In [30]: a
Out[30]: array([[1, 2, 3]])
In [31]: b
Out[31]: array([[4, 5, 6]])
In [32]: a.dot(b.T)
Out[32]: array([[32]])
In [33]: a.dot(b)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-33-9a1f5761fa9d> in <module>()
----> 1 a.dot(b)
ValueError: objects are not aligned

【讨论】:

    【解决方案2】:

    你需要transpose第一个数组:

    import numpy as np
    a = np.array([[1], [2], [3]])
    b = np.array([[4], [5], [6]])
    np.dot(a.T, b)
    

    或第二个数组:

    np.dot(a, b.T)
    

    【讨论】:

      猜你喜欢
      • 2015-10-12
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多