[英]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.