将函数从matlab转换为python
我是python新手。我在将matlab中的这个简单函数转换为python时遇到了一个问题。这是原始的matlab代码将函数从matlab转换为python,python,matlab,numpy,Python,Matlab,Numpy,我是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):
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,)
任何帮助都将不胜感激。谢谢
D
,A
和B
是不必要的,它们仅用于从端到端读取图像(第二轴和第三轴向后读取)。在NumPy中,该符号是
crp = image1[:, ::-1, ::-1]
其次,max
的第二个参数不起作用,您应该使用
cmode1 = np.max(crp, axis=1)
D
、A
和B
是不必要的,它们仅用于从端到端读取图像(第二轴和第三轴向后读取)。在NumPy中,该符号是
crp = image1[:, ::-1, ::-1]
其次,max
的第二个参数不起作用,您应该使用
cmode1 = np.max(crp, axis=1)
np.max(image1,axis=0,keepdims=1)
因为MATLAB保持dims,以便与MATLAB版本严格一致。然后您需要这样的东西:np.max(image1,axis=0,keepdims=1)[0].T
来删除额外的dim。如果您急于到达最终目的地:np.max(image1,axis=0).T
np.max(image1,axis=0,keepdims=1)
,因为MATLAB保持dims,以便与MATLAB的版本严格一致。然后您需要这样的东西:np.max(image1,axis=0,keepdims=1)[0].T
来删除额外的dim。如果您急于到达最终目的地:np.max(image1,axis=0).T
。您应该更改此问题的标题,以更好地反映函数的功能。这样,将来可能会帮助更多的SO用户。您应该更改此问题的标题,以更好地反映函数的功能。这样一来,它可能会在未来帮助更多的SO用户。