数据的离散化处理

在ACM中 经常有 数据m<=50000(不多) 但是 a[i]<=inf这样的情况 这种时候就应该离散化处理

比如 10 3 2 9 1 和 5 3 2 4 1 等价(多用于逆序数) 

我们要怎么办呢?

首先有两个数组 init[n] copy[n]输入进init 之后 复制到copy 对copy进行排序 并且去重(这个地方的stl unique非常好用!)

<span class="sh_type" style="color: rgb(0, 100, 0);">int</span> size<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_function" style="font-weight: bold;">unique</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_symbol">copy</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span><span class="sh_symbol">copy</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">+</span>n<span class="sh_symbol" style="color: rgb(139, 0, 0);">)-</span><span class="sh_symbol">copy</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>

然后now[n']数组 now[i]=lower_bound(a,a+n',init[i])-a+1;

总的复杂度nlgn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据离散化处理是将连续型数据转换为离散型数据的过程,可以将数据划分为若干个区间(也称为“桶”),每个区间内的数据被视为相同的离散值。数据离散化处理通常用于数据挖掘、统计分析等领域。 在 Pandas 中,可以使用 cut() 和 qcut() 函数进行数据离散化处理。 cut() 函数将数据按照指定的区间划分为离散值,可以根据数据的最大值和最小值自动生成等距区间,也可以手动指定区间范围。 例如,下面的代码将一个 DataFrame 中的元素离散化为 5 个区间: ```python import pandas as pd data = pd.DataFrame({'value': [12, 34, 56, 78, 90, 23, 45, 67, 89, 100]}) bins = pd.cut(data['value'], 5) print(bins) ``` 输出结果为: ``` 0 (9.92, 28.8] 1 (28.8, 47.6] 2 (47.6, 66.4] 3 (66.4, 85.2] 4 (85.2, 104.0] 5 (9.92, 28.8] 6 (28.8, 47.6] 7 (47.6, 66.4] 8 (66.4, 85.2] 9 (85.2, 104.0] Name: value, dtype: category Categories (5, interval[float64]): [(9.92, 28.8] < (28.8, 47.6] < (47.6, 66.4] < (66.4, 85.2] < (85.2, 104.0]] ``` qcut() 函数将数据按照指定的分位数划分为离散值,可以根据数据的分布自动生成区间,也可以手动指定分位数。 例如,下面的代码将一个 DataFrame 中的元素离散化为 4 个区间: ```python data = pd.DataFrame({'value': [12, 34, 56, 78, 90, 23, 45, 67, 89, 100]}) bins = pd.qcut(data['value'], 4) print(bins) ``` 输出结果为: ``` 0 (11.999, 34.0] 1 (34.0, 56.0] 2 (56.0, 78.0] 3 (78.0, 100.0] 4 (78.0, 100.0] 5 (11.999, 34.0] 6 (34.0, 56.0] 7 (56.0, 78.0] 8 (78.0, 100.0] 9 (78.0, 100.0] Name: value, dtype: category Categories (4, interval[float64]): [(11.999, 34.0] < (34.0, 56.0] < (56.0, 78.0] < (78.0, 100.0]] ``` 在上面的例子中,cut() 函数和 qcut() 函数都返回了一个 Pandas 的 Categorical 类型的对象,可以通过 value_counts() 方法来统计每个区间内的元素个数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值