我是python的新手。我有一个问题,将matlab中的这个简单函数转换为python。这是原始的matlab代码
function Cmode=my_map(image1)
[D,A,B] = size(image1)
crp = image1((1:D),(A:-1:1),(B:-1:1));
Cmode1 = max(crp,[],1);
Cmode = permute(Cmode1,[3 2 1]);
输入文件是3d矩阵。我试过这个但是失败了
def cmode(image1):
[D,A,B] = np.shape(image1)
crp = image1[(0,D),(A,-1,0), (B,-1,0)]
cmode1 = np.max(crp,[],1)
c = np.transpose( np.expand_dims(cmode1, axis=2), (2, 1, 0) )
return c
这是错误
crp = d3image[(0,D),(A,-1,0), (B,-1,0)]
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (2,) (3,) (3,)
任何帮助将不胜感激。谢谢
答案 0 :(得分:2)
D
,A
和B
是不必要的,它们仅用于从头到尾读取图像(第二和第三轴向后读取)。在NumPy中,符号将是
crp = image1[:, ::-1, ::-1]
其次,max
的第二个参数不起作用,而应该使用
cmode1 = np.max(crp, axis=1)