2012-03-14 108 views
1

我試圖把數組放在另一個數組的順序。例如,如果我有:指定順序numpy數組

arr1 = np.array(['a', 'b', 'c']) 
index = np.array([2, 1, 0]) 

我期望的結果,ARR2,是[ 'C', 'B', 'A'],使得:

arr2[index[i]] == arr1[i] 

回答

6

可以簡單地傳遞選擇器陣列索引字符數組:

>>> import numpy as np 
>>> arr1 = np.array(['a', 'b', 'c']) 
>>> index = np.array([2, 1, 0]) 
>>> arr1[index] 
array(['c', 'b', 'a'], 
     dtype='|S1') 
+0

或許有在我的代碼中有一個錯誤,但是當我運行這個時,我得到以下關係,而不是期望的關係:arr2 [i] == arr1 [index [i]] – mike 2012-03-14 19:04:23

+0

你能用所需的輸出更新你的問題嗎? – jterrace 2012-03-14 19:06:01

+0

我認爲這個問題可能是在代碼之前的幾行 - 謝謝! – mike 2012-03-14 20:02:32

1

嘗試這種情況:

[arr1[i] for i in index] 
+1

不返回數組,對於numpy數組效率不高。一般規則:不要將numpy數組視爲python列表。幾乎總是有一個更好的方法來做到這一點與numpy builtins。 – JoshAdel 2012-03-14 18:57:28