2016-09-15 4 views
4

I가 순차적 매트릭스 차원 모두에서 플립 MATLAB 다음 함수가 발생한 : X(M,N,P) = (24,24,100) 치수를 갖는다NumPy 배열에서 각 치수를 순차적으로 뒤집는 방법은 무엇입니까?

function X=flipall(X) 
    for i=1:ndims(X) 
     X = flipdim(X,i); 
    end 
end 

. X이 NumPy 배열인데 어떻게하면 파이썬에서이 작업을 수행 할 수 있습니까?

+0

파이썬에서 X''의 형식은 무엇 : 당신이 버전 1.12.0 (사용자 hpaulj 덕분에)이없는 경우


, 당신은 동일한 작업을 수행 할 slice을 사용할 수 있습니다 ? 목록일까요 아니면 NumPy 배열일까요? 당신의 질문에 대답하기에는 너무 적은 정보가 있습니다. – rayryeng

+0

@rayryeng - 이것은 numpy 배열이어야합니다. – Wajih

+0

고마워요. 귀하는 귀하의 게시물에서 명확하게하지 않았습니다. – rayryeng

답변

5

MATLAB의 flipdim에 해당하는 문자는 numpyflip입니다. 이 버전은 1.12.0 버전에서만 사용할 수 있습니다.

따라서, 단순히이다 : 이와 같이

import numpy as np 

def flipall(X): 
    Xcopy = X.copy() 
    for i in range(X.ndim): 
     Xcopy = np.flip(Xcopy, i) 
    return Xcopy 

, 당신은 단순히과 같이 호출 것 :

Xflip = flipall(X) 

그러나 사전를 알고 있다면 당신은 단지 세 가지 차원을 가질 수 단순히 다음을 수행하여 작업을 하드 코딩 할 수 있습니다.

def flipall(X): 
    return X[::-1,::-1,::-1] 

이것은 각 치수를 바로 뒤집습니다.

import numpy as np 

def flipall(X): 
    return X[[slice(None,None,-1) for _ in X.shape]] 
+1

어때? X [:: - 1, :: - 1, - - 1] 동일할까요? – Wajih

+0

@Wajih Correct. 그것은 당신이 3 차원을 가지고 있다고 가정합니다. 이 코드는'numpy' 배열의 크기에 관계없이 작동합니다. – rayryeng

+0

감사합니다. 파이썬 구문은 너무 혼란 스럽습니다. 그렇습니다 차원은 3 일 것이다, 그래서 그것은 잘 작동 할 것이다 :) – Wajih

관련 문제