代码之家  ›  专栏  ›  技术社区  ›  gatoatigrado

如何包装numpy数组类型?

  •  8
  • gatoatigrado  · 技术社区  · 14 年前

    我想创建一个扩展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
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   unutbu    14 年前
    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]]
    

    你也可以阅读 this guide 有关如何子类的详细信息 ndarray .