基本算法之离散化
对于一列数字,我们关心的可能不是它的绝对大小,而是它的相对大小。例如学生的分数和排名。所谓“离散化”就是用相对值来代替它们的绝对值,其可以将分布广而系数的数据转换为密集分布,从而能够使算法更快速和便捷。
离散化的步骤如下:
- 排序;
- 离散化;
- 归位。
下面就是将数据离散化的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
评论区