如何从数组中的每n项中减去每n-1项(Python)?

如何从数组中的每n项中减去每n-1项(Python)?,python,arrays,Python,Arrays,我已经阅读了许多关于获取数组的每n项的帖子,我使用了切片偶数和奇数索引的方法。但是,最终的对象是一个空数组。有什么建议吗 floc1是一个数组,我想从每个偶数元素中减去每个奇数元素: period = abs(floc1[0::2] - floc1[1::2]) 这当前为我提供了一个空数组 编辑: 我已经尝试了下面评论中的所有建议。唯一产生不同错误的是: period = [i-j for i, j in zip(floc1[0::2], floc1[1::2])] 这使得: Phi12 =

我已经阅读了许多关于获取数组的每n项的帖子,我使用了切片偶数和奇数索引的方法。但是,最终的对象是一个空数组。有什么建议吗

floc1
是一个数组,我想从每个偶数元素中减去每个奇数元素:

period = abs(floc1[0::2] - floc1[1::2])
这当前为我提供了一个空数组

编辑:

我已经尝试了下面评论中的所有建议。唯一产生不同错误的是:

period = [i-j for i, j in zip(floc1[0::2], floc1[1::2])]
这使得:

Phi12 = ((tau)/(period))
ValueError: operands could not be broadcast together with shapes (1,8208) (0,) 
关于:

Phi12 = ((tau)/(period))

同样,
floc1
绝对不是空数组。我将其保存到一个文本文件中进行确认。

如果
floc1
是一个
列表(人们通常称之为“数组”),则您的示例会给出一个错误。对于
列表
,您可以这样做

>>> floc1 = [11, 5, 6, 2]
>>> it = iter(floc1)
>>> [x - next(it) for x in it]
[6, 4]
如果您愿意看到@wenzul的答案,也可以使用
zip

如果
floc1
是一个numpy.array-您已经使用的

>>> import numpy as np
>>> floc1 = np.array([11, 5, 6, 2])
>>> abs(floc1[0::2] - floc1[1::2])
array([6, 4])

也许您的
floc1
实际上是一个空数组

它不起作用,因为您试图从列表中减去一个列表。 您需要明智地执行该元素

>>> for i, k in zip(floc1[0::2], floc1[1::2]):
...     print abs(i-k)

还可以查看。

floc1
是numpy数组吗?是的,
floc1
是numpy数组。它是从以前的循环生成的:
if len(locs2)>len(locs):floc2=np.savetxt('floc1.txt',floc1=np.savetxt('floc2.txt',floc1=np.transpose)else:floc1=np.transpose('floc1.txt',floc1)np.savetxt('floc2.txt',floc2)
在这个过程中可能出了问题。你能试着打印floc1(或len(floc1)(如果它很大)来缩小问题吗?
floc1
很大。当我运行print命令时,我得到:
[[132 133 134…,147102 147103 147104]
len(floc1)
返回
1
。此外,我还将floc1保存为文本文件,可以看到所有值。不是空的,是你的问题
floc1[0]
是您应该操作的数组。这给了我以下信息:
回溯(最近一次调用):文件“”,第1行,在StopIteration
@RobbieCapps中,这意味着您在数组中有奇数个项目。您能指定在这种情况下应该发生什么吗?对于这种情况,使用尽可能多的值才是重要的。所以,如果我最终比开始少了一个,那没关系。我读了你的编辑。我也这么想,但我使用
np.savetext
floc1
保存为文本文件。它包含我所期望的值。@xbug,是的,zip可以正常工作,但比使用本机numpy操作慢得多。