如何包装numpy数组类型?
问题描述:
我想使延伸的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
答
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。
这看起来不错; numpy.empty.view(LemmaMatrix)也很好。谢谢! :) – gatoatigrado 2010-05-18 01:59:05
一件小事 - 为什么不是$尺寸而不是$数据?清楚的是尺寸而不是价值? – gatoatigrado 2010-05-18 02:01:54
@gatoatigrado:无论如何,你可以使用类似'np.array(data).size'的东西。我猜测 - 也许是错误的 - 你想要什么。 – unutbu 2010-05-18 02:09:32