2012-03-14 80 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