如何将此八度音程代码转换为 python 以及八度音程中的运算符是什么 '* 以及它与 python 等价的是什么

How to convert this octave code to python and what is this operator in octave '* and what is it's python equivalent

Octave '* 中的这个运算符是什么,它是什么 python 等价物

以下八度编码的 python 等价物是什么?

a = [2;3]
b = [1;4]
a'*b

简而言之,我想知道 ( '* ) 的 python 等价物是什么,它叫什么以及它有什么作用。我如何在 python 中实现相同的功能?我需要新的图书馆吗?有人可以将这部分转换成 python.

提前致谢

>> a = [2;3]
a =
   2
   3
>> b = [1;4]
b =
   1
   4
>> a'*b
ans =  14

使用numpy最直接的翻译是:

In [19]: a = np.array([2,3])[:,None]
In [20]: a
Out[20]: 
array([[2],
       [3]])
In [21]: b = np.array([1,4])[:,None]
In [22]: b
Out[22]: 
array([[1],
       [4]])
In [23]: np.dot(a.T,b)
Out[23]: array([[14]])

更短的表达式:

In [24]: np.dot([2,3], [1,4])
Out[24]: 14
In [25]: 2*1 + 3*4
Out[25]: 14

MATLAB/Octave '是转置(有时也写成.',共轭转置)。 *是矩阵乘法,np.dotnp.matrix 还使用 * 作为矩阵乘法。


正如评论中指出的那样,我倒退了。 .' 是普通转置。

也许更重要的是 MATLAB/Octave 矩阵总是至少 2d,转置总是有区别的。 numpy 数组可能是一维的,在这种情况下 np.transpose 什么都不做。因此,在我的直译中,我添加了一个尾随维度以确保 ab 的形状为 (2,1)。

numpy 有一个 np.matrix 子类,这应该对任性的 MATLAB 用户更友好。然而,它是几年前编写的,当时 MATLAB 只有二维矩阵。所以 np.matrix 永远是 2d,永远不会更多。

np.matrix(a).conjugate()是共轭转置,简称np.matrix(a).H。 (.T 是非共轭转置。)

n [76]: aI = a+0*1j
In [77]: aI
Out[77]: 
array([[ 2.+0.j],
       [ 3.+0.j]])
In [79]: aI.conjugate()
Out[79]: 
array([[ 2.-0.j],
       [ 3.-0.j]])
In [80]: np.matrix(aI)
Out[80]: 
matrix([[ 2.+0.j],
        [ 3.+0.j]])
In [81]: np.matrix(aI).H
Out[81]: matrix([[ 2.-0.j,  3.-0.j]])