2017-05-15 102 views
1

的選定索引我有兩個隨機索引發生器,從0到3numpy的應用功能,以矩陣

idx_1 = np.random.choice(4, 2, replace=False) 
idx_2 = np.setdiff1d(range(4), idx_1) 

和我有3D numpy的陣列,example_array,製成層疊4點矩陣一起,和2層的功能的,說func1和func2。

我要像做

example_array[idx1[0]] = func1(example_array[idx1[0]]) 
example_array[idx1[1]] = func1(example_array[idx1[1]]) 
example_array[idx2[0]] = func2(example_array[idx2[0]]) 
example_array[idx2[1]] = func2(example_array[idx1[0]]) 

什麼是這樣做的一個快速的方式,沒有明確寫他們如上?

+0

什麼是你的函數的輸出?標量或其他矩陣? –

+0

輸出是矩陣。 – Qubix

+0

'example_array [idx1]'產生一個新的數組,其第一維由'idx_'調整大小。如果你的'func1'可以用3d陣列工作,這個問題是微不足道的。如果它限制爲2d,那麼你必須在第一維上進行某種迭代,如你所做的那樣,或者在range():'循環中使用'for i。 – hpaulj

回答

1

什麼矢量化func1()func2()所以你可以做

example_array[idx1] = func1(example_array[idx1]) 
example_array[idx2] = func2(example_array[idx2]) 
+0

不幸的是,它後來在代碼中不適用於我。 – Qubix

+0

也許我們可以優化功能,如果你顯示他們 –

+0

不能真正顯示功能的代碼。 – Qubix