Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以在numpy结构化数组中对多个字段进行排序,并使用一些反向的、la SQL顺序吗_Python_Sorting_Numpy_Reverse - Fatal编程技术网

Python 我可以在numpy结构化数组中对多个字段进行排序,并使用一些反向的、la SQL顺序吗

Python 我可以在numpy结构化数组中对多个字段进行排序,并使用一些反向的、la SQL顺序吗,python,sorting,numpy,reverse,Python,Sorting,Numpy,Reverse,我已将SQL(MySQLdb)查询的结果加载到numpy结构化数组中。现在我想以各种方式对数组进行排序。字段是字符串、int、float和python对象(对于返回null的列)的混合包。我已经看过了,但正如askewchan在回答的底部所提到的,它不适用于字符串,也不适用于python对象(例如int,但来自带有null的列) 是否有一种方法可以通过一个或多个可能为非数字类型的字段对一维结构化数组进行排序,这些字段可以独立改变其方向(升序/降序)。基本上,我在寻找类似SQL的“ORDER BY

我已将SQL(MySQLdb)查询的结果加载到numpy结构化数组中。现在我想以各种方式对数组进行排序。字段是字符串、int、float和python对象(对于返回null的列)的混合包。我已经看过了,但正如askewchan在回答的底部所提到的,它不适用于字符串,也不适用于python对象(例如int,但来自带有null的列)


是否有一种方法可以通过一个或多个可能为非数字类型的字段对一维结构化数组进行排序,这些字段可以独立改变其方向(升序/降序)。基本上,我在寻找类似SQL的“ORDER BY”子句的内容。

正如他在回答中所说:

假设所有值都是数字(因为负数不会反转字符串排序)

您可以做的事情是将数据转换为数据帧。由于您已经将数据保存在NumPy阵列中,并且不会对数据进行任何复制,因此它将重用您的数据结构,因此此操作非常便宜。之后,您可以执行以下操作:

>>> a = np.array([(4, 'GE'), (1,'RE'), (1,'AE'), (4,'CD')],
                 dtype=[('x', 'i4'), ('y', 'S2')])
>>> df = pd.DataFrame(a)
>>> df.sort(['x', 'y'], ascending=[0,1])
   x   y
3  4  CD
0  4  GE
2  1  AE
1  1  RE
>>> df.sort(['x', 'y'], ascending=[0,0])
   x   y
0  4  GE
3  4  CD
1  1  RE
2  1  AE
>>> df.sort(['y', 'x'], ascending=[1,0])
   x   y
2  1  AE
3  4  CD
0  4  GE
1  1  RE
>>> df.sort(['y', 'x'], ascending=[0,0])
   x   y
1  1  RE
0  4  GE
3  4  CD
2  1  AE

是的,我看到它对字符串不起作用,这就是为什么我要问是否有其他方法可以做到这一点。也就是说,熊猫似乎就是这样。谢谢