【问题标题】:Numpy sorting a matrix by column by cycleNumpy按列按周期对矩阵进行排序
【发布时间】:2021-03-08 16:51:58
【问题描述】:

我有这个 numpy 数组:

array(   
[[  1.        ,   9.        , 565.98653513],  
[  1.        ,   1.        , 973.18466261],  
[  1.        ,  25.        , 803.17747373],  
[  2.        ,   9.        ,  82.56336897],  
[  2.        ,   1.        , 104.69517373],  
[  2.        ,  25.        , 627.01127514],  
[  3.        ,  21.        , 334.07622382],  
[  3.        ,  34.        , 921.37623107],  
[  3.        ,  20.        , 342.08177942],

... ...  ... ...

[ 10.        ,   7.        , 424.29338026],  
[ 10.        ,   0.        , 232.71475407],  
[ 10.        ,   1.        , 330.44846202]])

但我想按循环中的第一列对矩阵进行排序:1、2、3、...、10。它应该是这样的:

array(   
[[  1.        ,   9.        , 565.98653513],  
[  2.        ,   9.        ,  82.56336897],  
[  3.        ,  21.        , 334.07622382],  

... ... ... ...  

[ 10.        ,   7.        , 424.29338026], 
[  1.        ,   1.        , 973.18466261],  
[  2.        ,   1.        , 104.69517373],  
[  3.        ,  34.        , 921.37623107],  

... ... ... ...  

[ 10.        ,   0.        , 232.71475407],
[  1.        ,  25.        , 803.17747373],  
[  2.        ,  25.        , 627.01127514],  
[  3.        ,  20.        , 342.08177942],  

... ... ... ...  

[ 10.        ,   1.        , 330.44846202]])  

我该怎么做?

我正在考虑将其转换为数据框(即 pandas)以获得更多排序选项,然后转换回数组...但我没有看到直接的函数来执行此操作。

感谢任何帮助或想法。

【问题讨论】:

    标签: python arrays numpy dataframe sorting


    【解决方案1】:

    假设你的数组被命名为x:

    y = [x[i::10] for i in range(int(len(x)/10))]
    y = np.array(y)
    y.reshape(x.shape)
    print(y)
    

    x[i:j:k] 表示法表示x ij,步骤为 k。所以x[i::10] 的意思是xiend 步骤 10

    查看更多here

    【讨论】:

    • 是的......做到了!现在我要查找“::”语法来找出你的第一行。我在想一个 for 循环,但你做的很快。我的数组是 (100,3),但会放大到大约 (100k, 3)。谢谢@Pablo C
    • 我会添加文档链接
    • @foobash 请将其标记为已接受,如果有帮助请投票:)
    • 在看到你更新之前就想通了。 :: 是“每隔一个”。 jakevdp.github.io/PythonDataScienceHandbook/…
    • 我接受了,但我还没有 15 个声望点可以公开投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多