相关疑难解决方法(0)

按多个轴排序2D numpy数组

我有一个2D numpy形状的阵列(N,2),它持有N个点(x和y坐标).例如:

array([[3, 2],
       [6, 2],
       [3, 6],
       [3, 4],
       [5, 3]])
Run Code Online (Sandbox Code Playgroud)

我想对它进行排序,使得我的点按x坐标排序,然后在x坐标相同的情况下按y排序.所以上面的数组应该如下所示:

array([[3, 2],
       [3, 4],
       [3, 6],
       [5, 3],
       [6, 2]])
Run Code Online (Sandbox Code Playgroud)

如果这是一个普通的Python列表,我只需要定义一个比较器来做我想要的,但据我所知,numpy的sort函数不接受用户定义的比较器.有任何想法吗?


编辑:感谢您的想法!我设置了一个包含1000000个随机整数点的快速测试用例,并对我可以运行的那些进行了基准测试(抱歉,目前无法升级numpy).

Mine:   4.078 secs 
mtrw:   7.046 secs
unutbu: 0.453 secs
Run Code Online (Sandbox Code Playgroud)

python sorting numpy

28
推荐指数
2
解决办法
2万
查看次数

多列上的Numpy排序ndarray

ndarray从一个文件中读取它,就像这样

my_data = np.genfromtxt(input_file, delimiter='\t', skip_header=0)
Run Code Online (Sandbox Code Playgroud)

示例输入(已解析)

[[   2.    1.    2.    0.]
 [   2.    2.  100.    0.]
 [   2.    3.  100.    0.]
 [   3.    1.    2.    0.]
 [   3.    2.    4.    0.]
 [   3.    3.    6.    0.]
 [   4.    1.    2.    0.]
 [   4.    2.    4.    0.]
 [   4.    3.    6.    0.]]
Run Code Online (Sandbox Code Playgroud)

更长的示例输入(未解析).

前两列应该是int,而最后两列应该是float,但这就是我得到的.欢迎提出建议.

主要问题是,我正在尝试使用Numpy对其进行排序,以便行排序优先于第二列的数字,然后是第一列.

期望输出的示例

[[   2.    1.    2.    0.]
 [   3.    1.    2.    0.]
 [   4.    1.    2.    0.]
 [ …
Run Code Online (Sandbox Code Playgroud)

python arrays sorting numpy

8
推荐指数
4
解决办法
1万
查看次数

标签 统计

numpy ×2

python ×2

sorting ×2

arrays ×1