Python - 需要提取数组的某些部分

时间:2014-03-21 16:11:42

标签: python

我有两个列表:x_data,y_data

两者都是86400(x_data是以小时为单位的时间) 我希望能够从7到14小时内取出x的条目,以及y_data中的相应值。

我已经完成了

for i, j in enumerate(x_data):
        if ( j < 7 & j > 14): 
           print i, j

它没有用。我真的不知道该怎么做。我从今天早上开始尝试使用python(尝试使用它而不是IDL)

4 个答案:

答案 0 :(得分:2)

你不需要提取厕所。就这样做:

print x_data[7:15]

python中没有数组。 Python有列表,您可以阅读有关列表here的更多信息。

答案 1 :(得分:2)

最简单的方法是使用zip

for x, y in zip(x_data, y_data):
    if 7 < x < 14:
        print(x, y)

您可以使用list comprehension将值提取到单独的列表中:

extract = [(x, y) for x, y in zip(x_data, y_data) if 7 < x < 14]

用你正在做的事情:

for i, j in enumerate(x_data):

在每次迭代中,j是来自x_data的元素,i是其索引。您可以使用它来访问y_data

     if 7 < j < 14:
         print(j, y_data[i])

但这两个列表的zip比较简洁。

答案 2 :(得分:0)

在python中,运算符不是&它是and

答案 3 :(得分:0)

这将取决于数据的确切格式。

你说你有86400个元素,所以我猜它是每秒一个元素。如果是这样的话,那就像:

start = 7 * 3600 # 7 hours
end = 14 * 3600  # and 14 hours
x_slice = x_data[start:end]
y_slice = y_data[start:end]

但是,这要求x_data按递增时间排序。

如果不是这种情况,则必须并行地对两个数组进行一些循环(jonrsharpe提到的基于zip的方法看起来像一个可能的起点)。