我想通过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]] ]
我刚好康复,我尝试了很多但没有成功,请帮忙。
答案 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')