【NumPy】Python将数组中低于一定百分比的值替换
情景举例
现有一个一维数组(或二维进行遍历)存放着很多,找到低于中位数20%的值并将小于该值的数全部替换为该值。
涉及方法
np.median(data, axis=0)
用于计算数组中元素的中位数(中值)data[data<x]
布尔索引numpy.percentile(data, per, axis=0)
用于获取数组中百分比位置对应的数,如per=50即中位数np.where(data<x, x, data)
用于替换满足条件的值
代码示例
import numpy as np
# 获取中值
mid = np.median(data)
# 找到中值的索引
mid_ind = data[data < mid].size
# 计算中值位置的百分比
mid_per = mid_ind / data.size * 100
# 找到低于中值20%的百分比,不足20%则为0
per = mid_per - 20 if mid_per - 20 > 0 else 0
# 找到低于中值20%的值
val = np.percentile(data, per)
# 将小于该值的数替换为该值
data = np.where((data < val), val, data)
作者:盛夏光年ltk
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主是利用学习、参考、实践、复制和粘贴等多种方式打造成自己的文章,如有帮助记得点赞!