gpt4 book ai didi

python - 在 Python 中调整数据序列大小的最佳方法

转载 作者:行者123 更新时间:2023-11-28 21:38:44 27 4
gpt4 key购买 nike

我有一个必须调整大小的数据序列(列表)。我已经为它写了一个函数,但它非常粗糙。有谁知道解决此问题的更好方法?

预期行为:

在所有示例中,我的输入数据序列如下:编辑:即使示例是线性的,您也不能指望序列是由公式构建的。

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

当我将它的大小时从 10 项调整为 5 项时,我希望输出类似于以下内容:

[1, 3, 5, 7, 9][2, 4, 6, 8, 10]

现在,当您将数据序列的长度减半时,所有这一切都不是很困难,但我的输出序列的大小是可变的。我可以小于或大于原始序列的长度。

当我将它的大小时从 10 个项目调整为 19 个(手动完成的简单数字)时,我期望是这样的:

[1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10]

当前函数

def sequenceResize(source, length):
"""
Crude way of resizing a data sequence.
Shrinking is here a lot more accurate than expanding.
"""
sourceLen = len(source)
out = []
for i in range(length):
key = int(i * (sourceLen / length))
if key >= sourceLen:
key = sourceLen - 1

out.append(source[key])
return out

结果如下:

>>> sequenceResize(sequence, 5)
[1, 3, 5, 7, 9]
>>> sequenceResize(sequence, 19)
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10]

收缩是准确的,但扩展序列不是很好。

有谁知道现有的或简单的方法可以正确解决这个问题?

最佳答案

您可以使用 np.lisnpace:

import numpy as np

list_in = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

resize = 19

list_out = np.linspace(list_in[0], list_in[-1], num=resize)

print(np.ndarray.tolist(list_out))

输出:

[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0]

关于python - 在 Python 中调整数据序列大小的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47854733/

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