python - 有没有办法从python中的数组中删除相似的(数字)元素
问题描述
我有一个函数可以生成这样的数组:
[ 14 48 81 111 112 113 114 148 179 213 247 279 311 313 314 344 345 346]
它对应于曲线与 x 轴相交的数据值。由于数据不完善,它会产生误报,其中我的输出数组的元素彼此非常接近,例如 [111 112 113 114]。我需要从该数组中删除误报,但仍保留显示误报的初始正数。基本上我需要我的函数来产生和排列更像
[ 14 48 81 112 148 179 213 247 279 313 345]
来自不完美数据的误报已被删除。
解决方案
这是一种可能的方法:
arr = [14, 48, 81, 111, 112, 113, 114, 148, 179, 213, 247, 279, 311, 313, 314, 344, 345, 346]
def filter_arr(arr, offset):
filtered_nums = set()
for num in sorted(arr):
# Check if there are any "similar" numbers already found
if any(num+x in filtered_nums for x in range(-offset, offset+1)):
continue
else:
filtered_nums.add(num)
return list(sorted(filtered_nums))
然后,您可以使用您认为最有意义的任何偏移量应用过滤。
filter_arr(arr, offset=5)
Output: [14, 48, 81, 111, 148, 179, 213, 247, 279, 311, 344]
推荐阅读
- spring-boot - RabbitMQ DirectMessageListenerContainer 中的消费者 - Cloud Foundry 中的内存影响
- list - Unity3D:使用列表创建网格布局时出错
- php - 在 php 中使用 fb->get() 使用图形 api 获取 facebook 照片
- elasticsearch - 嵌套的 Elasticsearch 查询
- shell - Julia shell 命令如何处理管道?
- java - Java:如何在正在保存的流上即时计算 sha1 摘要?
- yii2 - Yii2 HttpClient:从响应实例访问请求实例
- azure - 从“Get-AzureRmEventHubKey”命令 power-shell 中提取 event-hub Microsoft-azure 的主键
- python - Python:_on_keyboard_down 函数传递值奇怪的字符,如 ā,Ă,ą
- c# - 无法从管理员进程下运行的进程获取 Windows 消息