16_NumPy数组ndarray以任何顺序排列行和列

16_NumPy数组ndarray以任何顺序排列行和列

NumPy数组ndarray的行和列可以使用称为花哨索引的机制以任何顺序重新排列(替换)。

分别描述行和列的情况。

  • 以任何顺序对列进行排序
  • 以任何顺序对行进行排序

使用np.sort()或np.argsort()进行升序或降序排序(排序)。

详情请参阅以下文章

  • 15_Numpy使用sort和argsort函数进行(行・列)排序

以下面的二维阵列为例。

import numpy as np

a = np.arange(10, 35).reshape(5, 5)
print(a)
# [[10 11 12 13 14]
#  [15 16 17 18 19]
#  [20 21 22 23 24]
#  [25 26 27 28 29]
#  [30 31 32 33 34]]

以任何顺序对列进行排序

可以通过以任何顺序引用索引列表来获得排序后的ndarray。

col_swap = a[:, [3, 2, 4, 0, 1]]
print(col_swap)
# [[13 12 14 10 11]
#  [18 17 19 15 16]
#  [23 22 24 20 21]
#  [28 27 29 25 26]
#  [33 32 34 30 31]]

如果要反转,切片::-1比列表更容易。

col_inverse = a[:, ::-1]
print(col_inverse)
# [[14 13 12 11 10]
#  [19 18 17 16 15]
#  [24 23 22 21 20]
#  [29 28 27 26 25]
#  [34 33 32 31 30]]

也可以仅提取(选择)特定的列。即使它们重叠也可以。

col_select = a[:, [2, 4, 0]]
print(col_select)
# [[12 14 10]
#  [17 19 15]
#  [22 24 20]
#  [27 29 25]
#  [32 34 30]]

col_select2 = a[:, [2, 2, 2]]
print(col_select2)
# [[12 12 12]
#  [17 17 17]
#  [22 22 22]
#  [27 27 27]
#  [32 32 32]]

以任何顺序对行进行排序

行与列相同。

向后的索引::可以省略([…,:]等效于[…])。

row_swap = a[[3, 2, 4, 0, 1], :]
print(row_swap)
# [[25 26 27 28 29]
#  [20 21 22 23 24]
#  [30 31 32 33 34]
#  [10 11 12 13 14]
#  [15 16 17 18 19]]

row_swap = a[[3, 2, 4, 0, 1]]
print(row_swap)
# [[25 26 27 28 29]
#  [20 21 22 23 24]
#  [30 31 32 33 34]
#  [10 11 12 13 14]
#  [15 16 17 18 19]]

row_inverse = a[::-1]
print(row_inverse)
# [[30 31 32 33 34]
#  [25 26 27 28 29]
#  [20 21 22 23 24]
#  [15 16 17 18 19]
#  [10 11 12 13 14]]

row_select = a[[2, 4, 0]]
print(row_select)
# [[20 21 22 23 24]
#  [30 31 32 33 34]
#  [10 11 12 13 14]]

row_select2 = a[[2, 2, 2]]
print(row_select2)
# [[20 21 22 23 24]
#  [20 21 22 23 24]
#  [20 21 22 23 24]]

你可能感兴趣的:(Numpy)