【发布时间】:2018-11-21 07:37:00
【问题描述】:
我正在将 MATLAB 代码转换为 Python Numpy。我指的是这个文档 http://scipy.github.io/old-wiki/pages/NumPy_for_Matlab_Users
下面是两条 MATLAB 行,
X = A(:,1)';
R = repmat(X(:),1,6);
其中A是二维矩阵
这是我转换后的 python 行
X = A[:, 1].conj().transpose()
R = np.tile(X[:], (1,6))
我有两个查询,
-
X = A(:,1)';- 在这一行中,引号 (') 是指.conj().transpose() - 这个
X[:]是正确的X(:)还是X.flatten(1)?
为了更清楚,实际上我是在尝试理解 MATLAB 代码,
-
X = A(:,1)';- 在这一行中,引号 (') 是指转置吗? -
X(:)- 在 MATLAB 中是什么意思?
【问题讨论】:
-
如果您解释了示例输入的预期输出,Python 程序员将更容易回答这个问题。他们可能不知道matlab。
-
要获得转置,您可以使用 np.transpose() 或 numpy 数组的 .T 属性。 x[:] 等于 x(不进行展平)
-
'是 Matlab 中的共轭转置(只是转置你使用.')。(:)表示展平(返回列向量)。但是这里X = A(:,1)已经被展平(行向量),所以X(:)只是将其转置为列向量;它与X.'相同。见online example -
@LuisMendo 谢谢,很有帮助。您可以将上述详细信息从 cmets 移至答案部分,因为它是答案:)
-
几个重要的区别。 MATLAB 始终是 2d(或更高);
numpy可以将维度减少到 1(甚至 0d)。x[:]什么都不做,只是创建一个新视图。对于 1dndarray转置不会改变任何东西。