2010-04-20 49 views
7

是否有任何方法來創建一個對象形式的任何類內numpy數組?喜歡的東西:對象數組與numpy

a = zeros(4) 

for i in range(4): 
    a[i]=Register() 

感謝

回答

11

是的,你可以這樣做:

a = numpy.array([Register() for _ in range(4)]) 

這裏,a.dtypedtype('object')

或者,如果你真的需要保留內存爲您的數組,然後建立它逐個元素,你可以這樣做:

a = numpy.empty(shape=(4,), dtype=object) 
a[0] = Register() # etc. 
+0

@Mike:感謝您在第一個解決方案中發現錯字;我的意思當然是你在解決方案中所做的。我忘記了先建立清單;現在已經糾正了。對於第二種解決方案,我切換到numpy.empty。 – EOL 2010-04-21 11:21:56

5

在numpy的陣列中的項目都是靜態類型,並且當你調用zeros你製作一系列花車。存儲任意Python對象,使用像

numpy.array([Register() for i in xrange(4)]) 

這使得與dtype=object數組,你也可以手動指定代碼。

考慮在這種情況下你是否真的想要numpy。我不知道這個例子與你的用例有多接近,但是通常情況下,dtype對象的一個​​numpy數組,特別是一維數組對,至少和列表一樣工作。