我正在将一些Matlab代码转换为Python,但发现一行我听不懂:
Y = reshape(X(j+(1:a*b),:),[b,a,p])
我知道reshape
函数有一个numpy analog,并且我已经阅读了Matrix Indexing in MATLAB文档,但是我似乎不太理解该行以将其转换为{{1 }}索引/切片。
我尝试了online converter OMPC,但是它使用了functions that are not defined outside of it(例如numpy
):
mslice
我也尝试过SMOP converter,但结果也很难理解:
Y = reshape(X(j + (mslice[1:a * b]), mslice[:]), mcat([b, a, p]))
您能解释一下在简单的Matlab中如何转换为Y = reshape(X(j + (arange(1, dot(a, b))), arange()), concat([b, a, p]))
索引/切片规则吗?
答案 0 :(得分:2)
Y = X[j+np.arange(a*b),:].reshape((b,a,p))
这不知道您到底想要什么,这是matlab行到python的翻译。
请注意,matlab索引从1开始,而numpy的索引从0开始。因此,根据其他几行,内部行可能是np.arange(a*b)
或np.arange(1,a*b)
。
您实际上并不需要使用第二个索引X
,因此X[1,:]==X[1]
是True
答案 1 :(得分:1)
在八度会话中:
import re
import sys
import time
with open('4 - raw.txt', 'rb') as content_file:
content = content_file.read()
newLinePos = [m.start() for m in re.finditer('\n', content)]
for line in newLinePos:
if (content[line-1]) != '\r':
print (repr(content[line-20:line]))
print ("end")
time.sleep(1000)
在numpy ipython中:
>> 1:3*3
ans =
1 2 3 4 5 6 7 8 9