2017-04-25 116 views
-1

我有两个相同形状的numpy数组。排序多个numpy数组

np.array_one = ([[1,4],[3,1]]) 
np.array_two = ([['A','B'],['C','D']]) 

我可以使用zip对python中的多个列表进行排序,是否有相当于numpy数组的?所以,我想排序一个列表,然后按照完全相同的方式得到以下列表。

np.sort(array_one, array_two) 

我想产生以下等价的:

array_one = ([[1,1],[3,4]]) 
array_two = ([['A','D'],['C','B']]) 
+0

对数组排序装置改变其元素的顺序,而不是*改变*这些元素。 –

+0

也许你可以解释为什么这不是一种?特别是因为解决方案(已确认)使用排序算法。 – woodbine

+0

你会说排序等同于比较,因为使用比较来排序吗? –

回答

1

您可以使用numpy.argsort;上array_one申请argsort和得到的排序,然后可以施加到array_two阵列对它进行排序(在array_one的意义上)的索引:

array_one = np.array([[1,4],[3,1]]) 
array_two = np.array([['A','B'],['C','D']]) 

array_two.ravel()[array_one.argsort(axis=None).reshape(array_one.shape)] 

#array([['A', 'D'], 
#  ['C', 'B']], 
#  dtype='<U1') 
+0

完美。谢谢。 – woodbine

+0

不客气。很高兴帮助! – Psidom