【问题标题】:Python equivalent for the matlab A(:,1)' and A(:)matlab A(:,1)' 和 A(:) 的 Python 等效项
【发布时间】: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))

我有两个查询,

  1. X = A(:,1)'; - 在这一行中,引号 (') 是指 .conj().transpose()
  2. 这个X[:] 是正确的X(:) 还是X.flatten(1)

为了更清楚,实际上我是在尝试理解 MATLAB 代码,

  1. X = A(:,1)'; - 在这一行中,引号 (') 是指转置吗?
  2. 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[:] 什么都不做,只是创建一个新视图。对于 1d ndarray 转置不会改变任何东西。

标签: python matlab numpy


【解决方案1】:

让我们定义一个例子A

>> A = [1 2 3; 4 5 6];

'conjugate transpose。仅transpose 使用.'

>> A(:,1)
ans =
     1
     4

>> X = A(:,1)'
X =
     1     4

(:) 表示reshape (flatten) into a column vector。这里X = A(:,1)' 已经被展平,即它是一个row 向量,所以X(:) 只是将其转置为列向量;和X.'一样:

>> X(:)
ans =
     1
     4

>> X.'
ans =
     1
     4

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 2015-03-14
    • 2013-02-27
    • 2014-08-05
    • 2016-04-14
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多