如何从每个区间 (0.0,0.2),(0.2,0.4),(0.4,0.8),(0.8,1.0) 中获取包含相等数量值的数组子集?
Posted
技术标签:
【中文标题】如何从每个区间 (0.0,0.2),(0.2,0.4),(0.4,0.8),(0.8,1.0) 中获取包含相等数量值的数组子集?【英文标题】:How can I obtain a array subset containing an equal number of values from each interval (0.0,0.2),(0.2,0.4),(0.4,0.8),(0.8,1.0)? 【发布时间】:2021-01-09 15:47:03 【问题描述】:如何从浮点数数组 [0.0, 1.0)] 的每个区间中找到相等数量的值?
例如:
第一个例子
编号为:0.1,0.3,0.5,0.7,0.9
输出应该是:0.1,0.3,0.5,0.7,0.9
。
这里的元素是从每个区间中选择的,比如区间 (0.0,0.2) = 0.1, (0.2,0.4) = 0.3 以此类推
第二个例子
编号为:0.3,0.5,0.7,0.9,0.5
输出应该是None
这里不存在区间 (0.0,0.2) 的元素。因此数组子集没有过滤任何值。
我尝试过的代码
b = []
for item in a:
if ((item>= 0.0) and (item<= 0.2)):
b.append(item)
elif ((item>= 0.2) and (item<= 0.4)):
b.append(item)
elif ((item>= 0.4) and (item<= 0.8)):
b.append(item)
elif ((item>= 0.8) and (item<= 1.0)):
b.append(item)
但这里的问题是它不满足第二个示例的输出,如果在间隔 [(0.0,0.2)] 的数组中不存在任何元素,那么它应该打印无值。
应该做什么?
【问题讨论】:
我不明白这个问题。这是关于查找重复项吗? 你想达到什么目的?您想检查连续相等的间隔(a1、a2、a3,其中 a3-a2 = a2-a1)并删除 a3? 我编辑了帖子以便更好地理解问题 如贴,间隔为(0.0,0.2),(0.2,0.4),(0.4,0.8),(0.8,1.0)
。从小数点来看,它们重叠了 3 个值。你是说不重叠的集合吗?
是的,我想要非重叠集
【参考方案1】:
我用这种方法试过了,效果很好。
import numpy as np
val = input("Enter the Numbers: ").split(',')
a = np.array(val).astype(np.float)
b = []
for item in a:
if((item >= 0.0) and (item <= 0.2)):
b.append(item)
elif ((item >= 0.2) and (item <= 0.4)):
b.append(item)
elif ((item >= 0.4) and (item <= 0.8)):
b.append(item)
elif ((item >= 0.8) and (item <= 1.0)):
b.append(item)
for item in a:
if((item >= 0.0 and item <= 0.2)) is False:
b = None
else:
break
b = np.unique(b)
print(b)
【讨论】:
以上是关于如何从每个区间 (0.0,0.2),(0.2,0.4),(0.4,0.8),(0.8,1.0) 中获取包含相等数量值的数组子集?的主要内容,如果未能解决你的问题,请参考以下文章
Linux性能优化从入门到实战:04 CPU篇:CPU使用率