如何从数组中的每n项中减去每n-1项(Python)?
我已经阅读了许多关于获取数组的每n项的帖子,我使用了切片偶数和奇数索引的方法。但是,最终的对象是一个空数组。有什么建议吗如何从数组中的每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 =
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操作慢得多。