我主要用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)]]
答案 0 :(得分:0)
您可以简单地对其进行排序:
arr.sort(axis=0)
您还可以明确提及排序键,但在您的情况下这是可选的,因为它仍然是第一个字段:
arr.sort(axis=0, order='dist')
或者制作副本而不是就地排序:
np.sort(arr, axis=1, order='dist')