假设我有一个数字数组,我想创建一个新数组,它是连续元素之间的差异。 (我希望这个问题的答案能够推广到除差分之外的其他函数!)
有简洁的方法吗?常规Python实现和Numpy / Pandas驱动的实现的解决方案将不胜感激!
不那么简洁的方式:
for index in range(len(array)):
if index < len(array) - 1:
differences.append(array[index+1]-array[index])
答案 0 :(得分:3)
如果您正在使用Numpy,请务必使用np.diff
。数组理解方法虽然优雅和pythonic(对于python数组)对于大规模数据集来说太慢了。
一般来说,Numpy的经验法则是:&#34;如果它有用,或者其他人想要它,它可能在Numpy&#34;
答案 1 :(得分:1)
differences = [array[index+1]-array[index] for index in range(len(array))-1]
这是一个&#34; list comprehension&#34;,是Python的强大功能之一。当它们直接处理列表元素而不是索引时,它们会更有用,但是这个示例接近原始代码。