我如何排序一个NumPy数组的第n列?
例如,给定:
a = array([[9, 2, 3],
[4, 5, 6],
[7, 0, 5]])
我想对a的行按第二列进行排序,得到:
array([[7, 0, 5],
[9, 2, 3],
[4, 5, 6]])
我如何排序一个NumPy数组的第n列?
例如,给定:
a = array([[9, 2, 3],
[4, 5, 6],
[7, 0, 5]])
我想对a的行按第二列进行排序,得到:
array([[7, 0, 5],
[9, 2, 3],
[4, 5, 6]])
当前回答
按a的第二列排序:
a[a[:, 1].argsort()]
其他回答
按a的第二列排序:
a[a[:, 1].argsort()]
正如Python文档wiki所建议的:
a = ([[1, 2, 3], [4, 5, 6], [0, 0, 1]]);
a = sorted(a, key=lambda a_entry: a_entry[1])
print a
输出:
[[[0, 0, 1], [1, 2, 3], [4, 5, 6]]]
def sort_np_array(x, column=None, flip=False):
x = x[np.argsort(x[:, column])]
if flip:
x = np.flip(x, axis=0)
return x
数组在原来的问题:
a = np.array([[9, 2, 3],
[4, 5, 6],
[7, 0, 5]])
问题作者所期望的sort_np_array函数的结果:
sort_np_array(a, column=1, flip=False)
[2]: array([[7, 0, 5],
[9, 2, 3],
[4, 5, 6]])
#用于按列1排序
indexofsort=np.argsort(dataset[:,0],axis=-1,kind='stable')
dataset = dataset[indexofsort,:]
import numpy as np
a=np.array([[21,20,19,18,17],[16,15,14,13,12],[11,10,9,8,7],[6,5,4,3,2]])
y=np.argsort(a[:,2],kind='mergesort')# a[:,2]=[19,14,9,4]
a=a[y]
print(a)
期望的输出是[[6、5、4、3、2],[11、10、9、8、7]、[12]16日,15日,14日,13日,[17]19日21日20日,18日)
请注意,argsort(numArray)返回numArray的索引,因为它应该以排序的方式排列。
例子
x=np.array([8,1,5])
z=np.argsort(x) #[1,3,0] are the **indices of the predicted sorted array**
print(x[z]) #boolean indexing which sorts the array on basis of indices saved in z
答案是[1,5,8]