从列表和数组中的值创建新列表

时间:2014-03-14 01:49:45

标签: python arrays list numpy

所以我有一个值数组,我想只取出某些值来放入一个新的列表或数组。为了更好地解释,这里是我所得到的一个例子。

说我有这个数组

>>> import numpy as np
>>> x = np.arange(10)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> 

从这个数组中我想要一个新的列表或数组中的0,2,3,5,6和8。 无论阵列的范围如何,我总是想要第一个,倒数第二个,以及它们之间的每一个。有没有人有一个很好的方法来做到这一点?

所以我想如果我解释为什么我需要这些特定方式的值,它可能有助于解决方案。我的代码中的数组是我在前面的步骤中计算的一系列角度。但是,我不需要程序下一部分的所有值。

到目前为止,我最好的猜测是尝试创建一个字典,可以将值分配给我正在寻找的角度名称。

像这样......

angle_name = { i=f, i+1=s, i+2=o}
if angle_name.haskey(x[i]):
    somenewlist.append(angle_name[x[i]])

这有什么意义吗? 我的最终目标是最终挑选出所需的角度,对它们进行适当的命名并将它们组织成一个漂亮的输出。

2 个答案:

答案 0 :(得分:0)

如果OP想要描述的内容:

import itertools
list(itertools.chain([x[0]], x[2:-2:2], [x[-2]]))

出[23]:[0, 2, 4, 6, 8]

或通过给出的字面示例:

def pairs_with_gap(arr):
    seq = iter(arr[2:-2])
    yield arr[0]
    for item in seq:
        yield item
        yield next(seq)
        next(seq)
    yield arr[-2]

print [y for y in pairs_with_gap(x)]

出[26]:[0, 2, 3, 5, 6, 8]

答案 1 :(得分:0)

我可以建议这种做法吗?

def slice_up(array):
    array_list = list(array)
    return sorted(array_list[2:-2:3] + array_list[:-2:3] + [array_list[-2]])

切片表示法,例如[2:-2:3]表示它应该从2索引开始(实际上是第三个元素,Python索引从零开始),然后从结尾开始(但不包括)第二个元素({{1三分之一。我尝试过官方文档,但它没有立即出现,所以这里有一个关于切片的规范Stackoverflow Q& A:Explain Python's slice notation

并使用:

-2