如何切片列表以在新列表中获取列表中每2个连续元素?

时间:2017-03-29 12:26:46

标签: python list python-3.x numpy slice

假设您有一个列表[1,2,3,...,99,100]

import numpy as np
ls = np.linspace(1,100,100)

假设您使用切片符号来找到适合您的符号。

print(ls[:2])
>> [ 1.  2.]

print(ls[::2])
>> [  1.   3.   5.   7.  ...  97.  99.]

如何以我能得到的方式切片数据

[1,2],[3,4],[5,6],[7,8],...,[99,100]

##可能并不重要,但我的目的是使其适应我的数据集,其中列表中的值表示要比较的另一个值列表(other_values [index])的数字下标。是否可以将切片与数组相结合?

2 个答案:

答案 0 :(得分:6)

您可以使用.resize(..,2)选项。结果是ls现在是一个具有50×2维度的numpy数组:

>>> ls.resize(ls.shape[0]/2,2)
>>> ls
array([[   1.,    2.],
       [   3.,    4.],
       [   5.,    6.],
       [   7.,    8.],
       [   9.,   10.],
       [  11.,   12.],
       [  13.,   14.],
       [  15.,   16.],
       [  17.,   18.],
       [  19.,   20.],
       [  21.,   22.],
       [  23.,   24.],
       [  25.,   26.],
       [  27.,   28.],
       [  29.,   30.],
       [  31.,   32.],
       [  33.,   34.],
       [  35.,   36.],
       [  37.,   38.],
       [  39.,   40.],
       [  41.,   42.],
       [  43.,   44.],
       [  45.,   46.],
       [  47.,   48.],
       [  49.,   50.],
       [  51.,   52.],
       [  53.,   54.],
       [  55.,   56.],
       [  57.,   58.],
       [  59.,   60.],
       [  61.,   62.],
       [  63.,   64.],
       [  65.,   66.],
       [  67.,   68.],
       [  69.,   70.],
       [  71.,   72.],
       [  73.,   74.],
       [  75.,   76.],
       [  77.,   78.],
       [  79.,   80.],
       [  81.,   82.],
       [  83.,   84.],
       [  85.,   86.],
       [  87.,   88.],
       [  89.,   90.],
       [  91.,   92.],
       [  93.,   94.],
       [  95.,   96.],
       [  97.,   98.],
       [  99.,  100.]])

答案 1 :(得分:2)

类似

list(zip(l[::2], l[1::2]))

返回带有所需配对的元组列表