繁体   English   中英

用Numpy解释Matlab索引/切片

[英]Explain Matlab indexing/slicing in terms of Numpy

我正在将一些Matlab代码转换为Python,但发现了我不明白的一行:

Y = reshape(X(j+(1:a*b),:),[b,a,p])

我知道reshape函数有一个numpy模拟量,并且我已经阅读了MATLAB文档中的Matrix Indexing ,但是我似乎无法理解该行足以将其转换为numpy索引/切片。

我尝试了在线转换器OMPC,但它使用的功能未在其外部定义 (例如mslice ):

Y = reshape(X(j + (mslice[1:a * b]), mslice[:]), mcat([b, a, p]))

我也尝试了SMOP转换器,但结果也很难理解:

Y = reshape(X(j + (arange(1, dot(a, b))), arange()), concat([b, a, p]))

您能解释一下简单Matlab中到numpy索引/切片规则的转换吗?

Y = X[j+np.arange(a*b),:].reshape((b,a,p))

不知道您到底想要什么,这是matlab行到python的翻译。

请注意,matlab索引从1开始,而numpy的索引从0开始。因此,根据其他np.arange(a*b)行,内线可能是np.arange(a*b)np.arange(1,a*b)

另外,您实际上并不需要使用X的第二个索引,因此X[1,:]==X[1]True

在八度会话中:

>> 1:3*3
ans =
   1   2   3   4   5   6   7   8   9

在numpy ipython中:

In [8]: np.arange(1,10)
Out[8]: array([1, 2, 3, 4, 5, 6, 7, 8, 9])
In [9]: np.arange(3*3)
Out[9]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM