2014-03-14 113 views
0

所以我有一個值的數組,我只想拿出某些值放入一個新的列表或數組中。爲了更好地解釋,這裏是我所得到的一個例子。從列表和數組中創建新的列表

說我有此數組

>>> 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

你爲什麼要3和5,但不是4? – jwodder

+0

告訴我們你已經嘗試過... – RW4

+5

「第一,倒數第二,以及它們之間的每兩個」......這是如何描述的:0,2,3,5,6,8? – isedev

回答

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索引從零開始)開始,並且從最後到第三個元素(-2),但不包括第二個元素。我嘗試了官方的文檔,但它不是馬上快到了,所以這裏有一個規範的#1 Q & A於切片:Explain Python's slice notation

和使用方法:

>>> 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] 
+0

這真的很有幫助。我仍然在學習Python中許多不同的排序,拆分和連接樣式工具。我對array_list [2:-2:3]有點困惑。冒號(:-2 :)之間的值在數組中挑選出值是什麼? – user3418064

+0

@ user3418064我評論了切片符號,是否解釋它? –

+0

是的,這比我想要做的事情更有意義,也沒有那麼複雜。謝謝 – user3418064

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]