2017-04-16 71 views
-1

我有一個字典,它的第一個元素'Groups'包含一個數組列表。從數組列表中切出每個數組的第三個元素(Python)

stump['Groups'][0] 

[array(['a', 65000, 0], dtype=object), 
array(['a', 95000, 1], dtype=object), 
array(['b', 78000, 1], dtype=object), 
array(['b', 19000, 1], dtype=object)] 

我想切片每行的第三列並對它們做一些操作。 所以第三列值是[0,1,1,1]。

stump['Groups'][0][:] 
#results in the whole list 
[array(['a', 65000, 0], dtype=object), 
array(['a', 95000, 1], dtype=object), 
array(['b', 78000, 1], dtype=object), 
array(['b', 19000, 1], dtype=object)] 

然而,在前面[:]添加另一分度器/限幅器,只是該切片列表的一部分。

無論如何做到這一點沒有循環?

謝謝。

回答

1

列表理解應該做的工作:

[row[2] for row in stump['Groups'][0]] 

,並與該列表作爲一個數組的工作:

np.array([...]) 

array(['a', 65000, 0], dtype=object) 

是對象D類的這個列表的元素數組,大致與相同事物的列表相同。他們有不同的價值觀。

如果包裹在np.array(或np.stack)整個列表,你得到一個2D對象D型數組

In [58]: arr=np.array(alist) 
In [59]: arr.shape 
Out[59]: (4, 3) 
In [60]: arr 
Out[60]: 
array([['a', 65000, 0], 
     ['a', 95000, 1], 
     ['b', 78000, 1], 
     ['b', 19000, 1]], dtype=object) 

可被索引任何其他二維數組:

In [61]: arr[:,2] 
Out[61]: array([0, 1, 1, 1], dtype=object) 

astype(int)可以把將該對象數組轉換爲數字。由於字符串元素,完整的2d不能被轉換。

+0

是的,我忘了,我可以只是把列表轉換成陣列,這將允許我索引就像任何2D陣列。謝謝=) – Moondra

1

列表理解=>返回列表對象

column_list = [row[2] for row in stump['Groups'][0]] 

地圖功能=>返回地圖對象

column_map = map(lambda row: row[2], stump['Groups'][0]) 

itertools.imap功能=> iterator返回

column_iterator = itertools.imap(lambda row: row[2], stump['Groups'][0]) 

numpy的陣列片 - >返回numpy.array。 要求殘端[「羣組」] [0]是numpy.array類型的

columns_array = stump['Groups'][0][:,2] 
相關問題