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我对切片表示法发表了评论,这解释了它吗?是的,这比我试图做的更有意义,也没有那么复杂。谢谢