2016-04-15 28 views
2

所以我正在通過使用numpy數組而不是每個循環來優化一些python代碼。在切片數組中,有沒有辦法從類中訪問字段?訪問對象數據切片numpy陣列

class foo: 

    the_int = 0 

    def __init__(self, i): 
     self.bar = i 

one, two = foo(5), foo(10) 
ar = array([one, two]) 

int_array = ar[0:2].the_int 

#I want int_array = [5, 10] 

如果這是不可能以這種方式,我將如何有效地產生,而不使用每個循環,通過「AR」環我「INT_ARRAY」變量,從每個條目集「the_int」?

感謝, 凱爾

回答

2

你爲什麼要使用一個numpy的陣列來存儲PyObjects?你不會得到你認爲的性能改進。請參閱here

使用列表,你可以使用列表理解來代替:

class foo: 

    the_int = 0 

    def __init__(self, i): 
     self.bar = i 

one, two = foo(5), foo(10) 

ar = [one, two] 

int_array = [i.bar for i in ar[0:2]] 
+0

啊,這是有道理的。沒有意識到numpy數組不應該存儲對象。那麼對於每個循環都沒有辦法避免使用對象? –

+1

即使語法相似,我所用的列表理解實際上並不是一個for循環 – user3684792

+0

是的,只是注意到了這一點。它的速度明顯快於我的原始循環。非常感謝你的幫助! –