排序两种不同类型的Numpy数组

时间:2018-05-08 12:21:35

标签: python sorting numpy data-structures

我主要用C ++编写代码,我正在试图弄清楚如何对我设法创建的数据结构进行排序。请找到以下代码:

dtype = [('dist',float) , ('type',int)]
arr = np.zeros((200,2), dtype = dtype)
i = 0
for current_image in all_images:
    arr[i][0] = distance(current_image, new_image)
    if current_image[576] == 1:
        arr[i][1] = 1
    else:
        arr[i][1] = 0
    i = i + 1

我想在第一列创建一个200乘2的浮点数,在第二列中创建一个整数。我不是特别确定如何根据从最小到最大的dist值对所有200个元素进行排序。我的数据结构也很奇怪,如下所示:

[[( 9.47168802,  9) ( 0.        ,  0)]
[( 6.95162905,  6) ( 1.        ,  1)]
[( 8.72382552,  8) ( 0.        ,  0)]
[( 8.9333134 ,  8) ( 1.        ,  1)]]

1 个答案:

答案 0 :(得分:0)

您可以简单地对其进行排序:

arr.sort(axis=0)

您还可以明确提及排序键,但在您的情况下这是可选的,因为它仍然是第一个字段:

arr.sort(axis=0, order='dist')

或者制作副本而不是就地排序:

np.sort(arr, axis=1, order='dist')