2010-05-17 39 views
8

我想使延伸的numpy的陣列基本類型的類,如何包裝numpy數組類型?

class LemmaMatrix(numpy.ndarray): 
    @classmethod 
    def init_from_corpus(cls, ...): cls(numpy.empty(...)) 

但很顯然,它將不允許多維數組類型。有沒有解決的辦法?提前致謝!

ndarray(empty([3, 3])) 
TypeError: only length-1 arrays can be converted to Python scalars 

回答

4
import numpy as np 
class LemmaMatrix(np.ndarray): 
    def __new__(subtype,data,dtype=None): 
     subarr=np.empty(data,dtype=dtype) 
     return subarr 

lm=LemmaMatrix([3,3]) 
print(lm) 
# [[ 3.15913337e-260 4.94951870e+173 4.88364603e-309] 
# [ 1.63321355e-301 4.80218258e-309 2.05227026e-287] 
# [ 2.10277051e-309 2.07088188e+289 7.29366696e-304]] 

您可能還需要對如何繼承ndarray更多信息,請閱讀this guide

+0

這看起來不錯; numpy.empty.view(LemmaMatrix)也很好。謝謝! :) – gatoatigrado 2010-05-18 01:59:05

+0

一件小事 - 爲什麼不是$尺寸而不是$數據?清楚的是尺寸而不是價值? – gatoatigrado 2010-05-18 02:01:54

+0

@gatoatigrado:無論如何,你可以使用類似'np.array(data).size'的東西。我猜測 - 也許是錯誤的 - 你想要什麼。 – unutbu 2010-05-18 02:09:32