gpt4 book ai didi

python - 按值拆分为等份

转载 作者:太空狗 更新时间:2023-10-30 02:37:19 25 4
gpt4 key购买 nike

有没有一种方便的方法来拆分数组,使得无论每个部分中的元素数量如何,它包含的值的范围都是相同的?

假设我们有 (0, 100) 范围内的数据。设数组大小为1000,前500个元素都在(0, 20),后300个元素在(20, 40),以此类推。我想操纵按 20、40、60 和 80 分割的小节中的值。

数据可能看起来像这样:

1st div:  0,  0,  0, ... 17, 18
2nd div: 22, 22, 24, ... 37, 39
3rd div: 40, 41, 41, ... 55, 59
4th div: 65, 68, 73, 76, 76
5th div: 93, 96

按部分大小将数组分成大小相等的部分非常容易。但我正在使用一些简单的平均值绘制趋势线,每个部分的数据量各不相同。我知道 split 点。

它可以用 np.where 和类似 arr > border1 的条件来制作,只取第一个元素,合并然后拆分,但这看起来像一个长 -种做事方式。

任何指针将不胜感激。我不能是唯一遇到这个问题的人。此外,如果另一个图书馆做这种事情,我当然愿意使用它。

最佳答案

使用np.searchsorted获取那些将分成组的索引,然后使用 np.split -

拆分它们
In [41]: np.random.seed(0)

In [42]: a = np.sort(np.random.randint(0,100,(10000)))

In [43]: bins = [20,40,60,80]

In [46]: idx = np.searchsorted(a, bins)

In [47]: np.split(a,idx)
Out[47]:
[array([ 0, 0, 0, ..., 19, 19, 19]),
array([20, 20, 20, ..., 39, 39, 39]),
array([40, 40, 40, ..., 59, 59, 59]),
array([60, 60, 60, ..., 79, 79, 79]),
array([80, 80, 80, ..., 99, 99, 99])]

关于python - 按值拆分为等份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50461784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com