如何通过Numpy创建这个Matrix,并在第二行对矩阵进行排序?

时间:2017-07-28 10:30:54

标签: python sorting numpy matrix

我想通过Numpy创建一个矩阵,如下所示:

由0和1组成的第一列,在这种情况下,该值并不重要 第二列由整数组成,我想按此列对矩阵进行排序。

[[[1,1,1,1,1] , [3]],
 [[0,0,0,0,0] , [2]],
 [[1,1,1,1,1] , [5]]]

问题是:   - 如何创建这样的矩阵?   - 创建后,如何按第二列

对此矩阵进行排序

并得到如下答案:

[ [[0,0,0,0,0] , [2]],
  [[1,1,1,1,1] , [3]],
  [[1,1,1,1,1] , [5]] ]

我刚好康复,我尝试了很多但没有成功,请帮忙。

1 个答案:

答案 0 :(得分:1)

在下文中,我使用换行符来格式化此代码,以便将矩阵行放在单独的行上。这不是必需的,但我觉得它有助于显示每一行的内容(基本上是一个包含五个项目的列表和一个包含一个项目的列表)。

定义numpy数组时,还可以使用字段名称和该字段中存储的数据类型定义数据类型(dtype)。列表被numpy视为object类型,因此对于每一行,我为该行中的每个项目指定了一个字段名称(' x'和' y')和我已分配数据类型object

n = np.array([ ([1,1,1,1,1] , [3]), 
               ([0,0,0,0,0] , [2]), 
               ([0,0,0,0,0] , [5])], 
               dtype=[('x', object),('y', object)]

Numpy数组都有一个名为.sort()的内置方法,可以对行进行排序。如果使用字段名称给它一个订单参数,它将按字段(即该列)排序。在这种情况下,我们按照' y'字段/列。

n.sort(order='y')