Numpy数组的排序与去重

数组的排序

import numpy as np

# 创建一维数组
# arr = np.array([5, 3, 6, 2, 8])
# print('arr:\n', arr)
# print('*' * 100)

# 直接排序
# sort() ---升序排序
# arr.sort()
#
# print('排序之后的数组:\n', arr)

# 间接排序 --排序结果所对应的下标
# res = arr.argsort()
#
# print('res:',res)

# 创建二维数组
arr = np.array([[5, 4, 6],
                [4, 8, 3],
                [9, 5, 7]])
print('arr:\n', arr)
print('*' * 100)

# 直接排序 ---列的方向排序 --->向右 --->水平
# arr.sort(axis=1)

# print('排序之后的结果为:\n',arr)

# 排序的时候,自己动自己,不管其他的兄弟姐妹

# 间接排序  ---返回下标
# res = arr.argsort(axis=1)
# print('res:\n',res)

数组的去重

import numpy as np

# 对数组进行去重
# 创建数组
# arr = np.array([5, 5, 5, 6, 7, 7, 6, 1, 1, 0, 0])
# arr = np.array(['tom', 'mary', 'bob', 'tom', 'bob', 'mary'])
arr = np.array(['小花', '小华', '小化', '夏明', '李雷', '韩梅梅', '小花', '小华', '小化', '夏明', '李雷', '韩梅梅'])
print('arr:\n', arr)
print('*' * 100)

# 可以使用np.unique对数组进行去重,注意:去重,兼并着排序
# 注意:如果为英文字符串数组,排序规则是按照ascii码进行排序的
# 注意:如果为中文字符串数组,排序规则先对中文进行encode编码,再按照编码之后的ascii进行排序
arr = np.unique(arr)
print('arr:\n', arr)

数组的重复

import numpy as np

# 创建数组
arr = np.arange(9).reshape((3, 3))
print('arr:\n', arr)

# 可以使用np.tile对数组重复 ----重复对象为:整个数组
# 参数1:需要重复的数组
# 参数2: The number of repetitions of `A` along each axis.
# res = np.tile(arr, 2) # 默认为列的方向
# res = np.tile(arr, [2, 2])  # 指的是在行的方向重复2次,在列的方向也重复2次
# res = np.tile(arr, [2, 2, 2])  # 指的是在块的方向重复2次,在行的方向重复2次,在列的方向也重复2次
# print('res:\n', res)

# 可以使用np.repeat来对数组进行重复 --重复对象:整列、整行、单个元素
# 参数1:需要重复的数组
# 参数2:重复的次数
# 参数3:重复的方向
# res = np.repeat(arr, 2, axis=0)
# res = np.repeat(arr, 2, axis=1)
# res = np.repeat(arr, 2, axis=None)  # 如果不传递axis,会将原来的数组展开为一维再以元素为重复对象进行重复
# res = np.repeat(arr, [2, 2, 3], axis=1)  # 将第0列重复2次,将第1列重复2次,将第2列重复3次
# print('res:\n', res)

原文地址:https://www.cnblogs.com/duxiangjie/p/15753305.html