对数组进行排序&输出对应的索引值
发布时间:2022-12-09 11:02:27 所属栏目:PHP教程 来源:
导读: 目录
1 一维数组排序
-----1.1 升序排列
-----1.2 降序排列
-----1.3 含有相同元素的一维数组排序
-----1.4 使用 numpy.sort&numpy.argsort 是否会改变原数组
1 一维数组排序
-----1.1 升序排列
-----1.2 降序排列
-----1.3 含有相同元素的一维数组排序
-----1.4 使用 numpy.sort&numpy.argsort 是否会改变原数组
|
目录 1 一维数组排序 -----1.1 升序排列 -----1.2 降序排列 -----1.3 含有相同元素的一维数组排序 -----1.4 使用 numpy.sort&numpy.argsort 是否会改变原数组 2 二维数组排序 -----2.1 行的升序排列 -----2.2 列的升序排列 -----2.3 行的降序排列 -----2.4 列的降序排列 -----2.5 含有相同元素的二维数组 -----2.6 使用 numpy.sort&numpy.argsort 是否会改变原数组 3 多维数组排序 1 一维数组排序 1.1 升序排列 import numpy as np a = np.array([1, 7, 6, 12, 4, 3]) print(a) # 输出数组a print(np.sort(a)) # 输出升序排序后的a print(np.argsort(a)) # 输出升序排序后对应的索引 运行,得到 [ 1 7 6 12 4 3] [ 1 3 4 6 7 12] [0 5 4 2 1 3] 1.2 降序排列 import numpy as np a = np.array([1, 7, 6, 12, 4, 3]) print(a) # 输出数组a print(-np.sort(-a)) # 输出降序排序后的a print(np.argsort(-a)) # 输出降序排序后对应的索引 运行,得到 [ 1 7 6 12 4 3] [12 7 6 4 3 1] [3 1 2 4 5 0] 1.3 含有相同元素的一维数组排序 import numpy as np a = np.array([1, 7, 6, 6, 1, 7]) print(a) # 输出数组a print(np.sort(a)) # 输出升序排序后的a print(np.argsort(a)) # 输出升序排序后对应的索引 print(-np.sort(-a)) # 输出降序排序后的a print(np.argsort(-a)) # 输出降序排序后对应的索引 运行,得到 [1 7 6 6 1 7] [1 1 6 6 7 7] [0 4 2 3 1 5] [7 7 6 6 1 1] [1 5 2 3 0 4] 通过排序后的索引可以看出,当一维数组含有相同元素时,无论是升序排列还是降序排列,相同元素之间的前后关系并没有变,即靠前的元素仍然在前面,靠后的元素仍然在后面。 1.4 使用numpy.sort&numpy.argsort是否会改变原数组 import numpy as np a = np.array([1, 7, 6, 12, 4, 3]) print(a) # 输出数组a print(np.sort(a)) # 输出升序排序后的a print(a) print(np.argsort(a)) # 输出升序排序后对应的索引 print(a) 运行,得到 [ 1 7 6 12 4 3] [ 1 3 4 6 7 12] [ 1 7 6 12 4 3] [0 5 4 2 1 3] [ 1 7 6 12 4 3] 可以看出,使用numpy.sort&numpy.argsort不会改变原数组。 2 二维数组排序 2.1 行的升序排列 import numpy as np a = np.array([[1, 7, 6], [2, 4, 8]]) print(a) # 输出数组a print(np.sort(a, axis=1)) # 输出每行升序排序后的a print(np.argsort(a, axis=1)) # 输出每行升序排序后对应的索引 运行,得到 [[1 7 6] [2 4 8]] [[1 6 7] [2 4 8]] [[0 2 1] [0 1 2]] 2.2 列的升序排列 import numpy as np a = np.array([[1, 7, 6], [2, 4, 8]]) print(a) # 输出数组a print(np.sort(a, axis=0)) # 输出每列升序排序后的a print(np.argsort(a, axis=0)) # 输出每列升序排序后对应的索引 运行PHP数组排序,得到 [[1 7 6] [2 4 8]] [[1 4 6] [2 7 8]] [[0 1 0] [1 0 1]] 2.3 行的降序排列 import numpy as np a = np.array([[1, 7, 6], [2, 4, 8]]) print(a) # 输出数组a print(-np.sort(-a, axis=1)) # 输出每行降序排序后的a print(np.argsort(-a, axis=1)) # 输出每行降序排序后对应的索引 运行,得到 [[1 7 6] [2 4 8]] [[7 6 1] [8 4 2]] [[1 2 0] [2 1 0]] 2.4 列的降序排列 import numpy as np a = np.array([[1, 7, 6], [2, 4, 8]]) print(a) # 输出数组a print(-np.sort(-a, axis=0)) # 输出每列降序排序后的a print(np.argsort(-a, axis=0)) # 输出每列降序排序后对应的索引 运行,得到 [[1 7 6] [2 4 8]] [[2 7 8] [1 4 6]] [[1 0 1] [0 1 0]] 2.5 含有相同元素的二维数组 import numpy as np a = np.array([[1, 7, 1], [2, 4, 4]]) print(a) # 输出数组a print(np.sort(a, axis=1)) # 输出每行升序排序后的a print(np.argsort(a, axis=1)) # 输出每行升序排序后对应的索引 运行,得到 [[1 7 1] [2 4 4]] [[1 1 7] [2 4 4]] [[0 2 1] [0 1 2]] 当涉及含有相同元素的二维数组行的升序排列时,结论与一维数组一样,相同元素在比较轴(行排列时为行,列排列时为列)的相对位置不变。其余三种情况(含有相同元素的二维数组行的降序排列、含有相同元素的二维数组列的升序排列、含有相同元素的二维数组列的降序排列)也是一样。 2.6 使用numpy.sort&numpy.argsort是否会改变原数组 import numpy as np a = np.array([[1, 9, 8], [2, 7, 6]]) print(a) # 输出数组a print(np.sort(a, axis=1)) # 输出每行升序排序后的a print(a) print(np.argsort(a, axis=1)) # 输出每行升序排序后对应的索引 print(a) 运行,得到 [[1 9 8] [2 7 6]] [[1 8 9] [2 6 7]] [[1 9 8] [2 7 6]] [[0 2 1] [0 2 1]] [[1 9 8] [2 7 6]] 结论与一维数组相同,使用numpy.sort&numpy.argsort不会改变原数组。 3 多维数组排序 从一维数组和二维数组类推,相关结论不变。 (编辑:PHP编程网 - 钦州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330484号