2017-05-05 2 views
0

는 I 한 용지를 판독하고, X 축을 따라 50 %의 확률로 데이터가 뒤집혀 x 축을 따라 50 % 확률로 3D 데이터를 뒤집는 방법은 무엇입니까?

대로 언급.

주어진 데이터가 40x40x24 인 경우. 위의 요구 사항을 어떻게 수행 할 수 있습니까? 나는 파이썬 2.7을 사용하여 울부 짖는 코드를하려하지만 난 당신이 간단하게 사용할 수 있습니다 p 확률 n 요소에서 선택하기 위해

data_flip = np.flipud(data) 
data_flip = data[:, ::-1, :] 

답변

1

먼저 의미 "확률은 50 %"에 대한 확실하지 않다 : np.random.rand(n) < p. r = np.random.rand()[0, 1) 이상의 균일 한 분포에서 숫자를 생성하므로 r이 일부 상수 p (여기서 p은 [0,1])보다 작을 확률은 정확히 p입니다.

F(p) = 0, p<0 
     p, 0<=p<=1 
     1, p>1 

둘째, x 축과 y 축을 따라 플립 np.fliplr보다는 np.flipud (사용 따라 데이터를 플립이 확률 실제로,이 경우에 A = 0, B = 1이다 CDF of the distribution이며) :

# generate a 3D array size 3x3x5 
A = np.array([[1,2,3],[4,5,6],[7,8,9]]) 
A = np.tile(np.expand_dims(A, axis=2), (1,1,5)) 
# index the 3rd axis with probability 0.5 
p = 0.5 
idxs = np.random.rand(A.shape[2]) < p 
# flip left-right the chosen arrays in the 3rd dimension 
A[:,:,idxs] = np.fliplr(A[:,:,idxs]) 
+0

답장을 보내 주셔서 감사합니다. 마지막 줄'AA [:, :, idxs] = np.fliplr (AA [:, :, idxs])를 확인해 주시겠습니까? 그것은 AA 대신 A입니까? 또한 '50 %의 기회 '라는 의미가 무엇인지 설명해 주시겠습니까? – user8264

+0

'AA'는'A'이어야합니다 - 고마워요. 나는 또한 50 %의 가능성에 대해 자세히 설명했다. 첨부 된 코드의 처음 3 행은 작업 할 데이터를 생성하기위한 것입니다 (이미 가지고있는 데이터). – user2999345

+0

아하, 미안. 이 아이디어는 임의로 prob가 0.5 인 슬라이스 하나를 선택하고 0.5를 뒤집습니다. 정말 고마워 – user8264

관련 문제