侧边栏壁纸
博主头像
LittleAO的学习小站 博主等级

在知识的沙漠寻找绿洲

  • 累计撰写 125 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

基本算法之离散化

LittleAO
2023-12-02 / 0 评论 / 0 点赞 / 29 阅读 / 0 字
温馨提示:
本文最后更新于2023-12-02,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

基本算法之离散化

对于一列数字,我们关心的可能不是它的绝对大小,而是它的相对大小。例如学生的分数和排名。所谓“离散化”就是用相对值来代替它们的绝对值,其可以将分布广而系数的数据转换为密集分布,从而能够使算法更快速和便捷。

离散化的步骤如下:

  1. 排序;
  2. 离散化;
  3. 归位。

下面就是将数据离散化的Python示例代码:

# 离散化示例代码

# 输入数据
data = [1, 3000, 20, 4, 543, 20]
data_tmp = data.copy()
data_tmp.sort()  # 先排序
new_data = []
for i in data:
    # 返回一个pair的List,第一个变量为原始数据,第二个为相对位置
    new_data.append((i, data_tmp.index(i) + 1))

for i in new_data:
    print(i[1], end=' ')

以上代码的运行结果为:

1 6 3 2 5 3

有时我们需要进行去重,只需对data_tmp进行去重即可(set(data_tmp)):

# 离散化示例代码

# 输入数据
data = [1, 3000, 20, 4, 543, 20]
data_tmp = data.copy()
data_tmp = list(set(data_tmp))
data_tmp.sort()  # 先排序
new_data = []
for i in data:
    # 返回一个pair的List,第一个变量为原始数据,第二个为相对位置
    new_data.append((i, data_tmp.index(i) + 1))
    
for i in new_data:
    print(i[1], end=' ')

以上代码的运行结果为:

1 5 3 2 4 3
0

评论区