【问题标题】:Is there an equivalent Matlab dot function in numpy?numpy 中是否有等效的 Matlab 点函数?
【发布时间】:2012-07-03 08:55:32
【问题描述】:

numpy 中是否有等效的 Matlab dot 函数?

Matlab 中的dot 函数: 对于多维数组 A 和 B,dot 返回沿 A 和 B 的第一个非单维的标量积。A 和 B 的大小必须相同。

在 numpy 中,以下类似但不等价:

dot (A.conj().T, B)

【问题讨论】:

  • 你的A和B是什么类型的? numpy 数组还是 numpy 矩阵?

标签: python matlab numpy


【解决方案1】:

在 MATLAB 中,dot(A,B) 两个相同大小的矩阵 AB 很简单:

sum(conj(A).*B)

等效的 Python/Numpy:

np.sum(A.conj()*B, axis=0)

【讨论】:

    【解决方案2】:

    Matlab 示例1:

    A = [1,2,3;4,5,6] B = [7,8,9;10,11,12] dot(A,B)

    结果: 47 71 99

    Matlab 例子2:

    sum(A.*B)

    结果: 47 71 99

    Numpy版本的Matlab例子2:

    A = np.matrix([[1,2,3],[4,5,6]]) B = np.matrix([[7,8,9],[10,11,12]]) np.multiply(A,B).sum(axis=0)

    结果: 矩阵([[47, 71, 99]])

    【讨论】:

      【解决方案3】:

      检查这些备忘单。

      Numpy 包含一个数组类和一个矩阵类。 array 类旨在成为用于多种数值计算的通用 n 维数组,而 matrix 旨在促进线性代数计算。实际上,两者之间只有少数几个关键区别。

      运算符*、dot() 和 multiply():
      对于数组,* 表示逐元素乘法,dot() 函数用于矩阵乘法。
      对于矩阵,* 表示矩阵乘法,multiply() 函数用于逐元素乘法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多