Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表和数组中的值创建新列表_Python_Arrays_List_Numpy - Fatal编程技术网

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

Python 从列表和数组中的值创建新列表,python,arrays,list,numpy,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。 无论数组的范围如何,我总是希望第一个、倒数

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

假设我有这个数组

>>> 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]])
这有什么意义吗?
我的最终目标是最终挑选出所需的角度,恰当地命名它们,并将它们组织成一个漂亮的输出。

如果OP想要所描述的:

import itertools
list(itertools.chain([x[0]], x[2:-2:2], [x[-2]]))
Out[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)]

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

我可以推荐这种方法吗

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索引从零开始)开始,然后以三的速度上升到(但不包括)从末尾开始的第二个元素(
-2
)。我尝试了官方文档,但它不会立即出现,所以这里有一个关于切片的规范Stackoverflow Q&a:

以及使用:

>>> import numpy
>>> slice_up(numpy.arange(10))
[0, 2, 3, 5, 6, 8]
>>> slice_up(numpy.arange(15))
[0, 2, 3, 5, 6, 8, 9, 11, 12, 13]
>>> slice_up(numpy.arange(20))
[0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18]

为什么你想要3和5而不是4?让我们看看你尝试了什么…“第一个,倒数第二个,以及它们之间的每两个”。。。这是如何描述的:0,2,3,5,6,8?嗨,你介意给我一些反馈吗?这些是你想要的答案吗?这真的很有帮助。我仍在学习python中的许多不同的排序、拆分和连接样式工具。我对数组列表[2:-2:3]有点困惑。冒号(:-2:)之间的值在提取数组中的值时起到了什么作用?@user3418064我对切片表示法发表了评论,这解释了它吗?是的,这比我试图做的更有意义,也没有那么复杂。谢谢