所以我有一个值数组,我想只取出某些值来放入一个新的列表或数组。为了更好地解释,这里是我所得到的一个例子。
说我有这个数组
>>> 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]])
这有什么意义吗? 我的最终目标是最终挑选出所需的角度,对它们进行适当的命名并将它们组织成一个漂亮的输出。
答案 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