如何从每个区间 (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) 中获取包含相等数量值的数组子集?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得这样的 C 数组的元素数? [复制]

Linux性能优化从入门到实战:04 CPU篇:CPU使用率

python int() round() floor()函数的比较

如何从最近的列中获取值?

让每个 div 在 0.2 秒后依次淡入,而不是异步淡入

Pandas 1.0.0 与 python 3.5 不兼容