【问题标题】:Concise way to create an array of differences (from an array) [duplicate]创建差异数组的简洁方法(来自数组)[重复]
【发布时间】:2015-09-30 20:20:10
【问题描述】:

假设我有一个数字数组,我想创建一个新数组,它是连续元素之间的差异。 (我希望这个问题的答案可以推广到除差分之外的其他函数!)

有没有一种简洁的方法来做到这一点?常规 Python 实现和 Numpy/Pandas 驱动的实现的解决方案将不胜感激!

不太简洁的方式:

for index in range(len(array)):
    if index < len(array) - 1:
        differences.append(array[index+1]-array[index])

【问题讨论】:

标签: python arrays numpy pandas


【解决方案1】:

如果您使用 Numpy,请务必使用 np.diff。数组解析方法,虽然优雅且 Python 化(对于 Python 数组),但对于大规模数据集来说太慢了。

一般来说,使用 Numpy 的经验法则是:“如果它有用,或者其他人想要它,它可能在 Numpy 中”

【讨论】:

    【解决方案2】:
    differences = [array[index+1]-array[index] for index in range(len(array))-1]
    

    这是“列表推导式”,是 Python 的强大功能之一。当它们直接处理列表元素而不是索引时,它们会更有用,但这个示例与您的原始代码很接近。

    【讨论】:

    • 非常好,谢谢。仍在学习 Python 支持的所有高效类型。
    • 您可能需要等待 15 分钟左右才能查看其他人提交的内容。当你有一个最喜欢的,记得“接受”它,这样问题就会适当地退出。
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多