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

时间:2014-11-24 02:24:22

标签: 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 = ((tau)/(period))
ValueError: operands could not be broadcast together with shapes (1,8208) (0,) 

参考:

Phi12 = ((tau)/(period))

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

2 个答案:

答案 0 :(得分:2)

如果floc1list(人们经常称之为"数组"),那么您的示例会出错。对于list,您可以这样做。

>>> 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实际上是一个空数组

答案 1 :(得分:0)

由于您尝试从列表中减去列表,因此

无法正常工作。 你需要做那个元素。

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

另请查看this