如何从 jitclass 中提取 class 类型并单独指定它
how to extract class type from a jitclass and specify it alone
我有一个 jitclass 说 weather
并保存它的一个属性 att = weather.class_type.instance_type
以在另一个 jit 函数中使用来指定它的输出样式。
out_style = Tuple.from_types((ListType(att)))
@jit([out_style(nb.int64, nb.int64)], nopython=True)
def new_function():
......
该属性打印如下。
27725c129d0<_data:array(float64, 2d, A),_colmap:DictType[unicode_type,int64]<iv=None>,date0:datetime64[M],_tdelta:timedelta64[M]>
现在想把这个jitclass去掉,还是想手动指定这个属性再用。我看到有四种数据类型,array(float64, 2d, A)
、DictType[unicode_type,int64]
、datetime64[M]
和 timedelta64[M]
我是这样声明的,但是报错如下
out_style = Tuple.from_types((ListType(nb.types.Array(nb.float64, 2, 'A'), DictType(nb.types.unicode_type, bb2), nb.types.NPDatetime('M'), nb.types.NPTimedelta('M')))
TypeError: __init__() takes 2 positional arguments but 5 were given
请帮助解决这个问题。谢谢。
我不确定我是否理解正确。 ListType()
只能包含一个参数。就我而言,我在 ListType()
中添加了四个。它会导致错误。这里 att
的类型是 classinstancetype
。由于 jitclass
如前所述被删除,哪种数据类型是一个很好的选择,tuple?
nb.types.Tuple.from_types
在参数中获取一个列表,该列表应包含每种类型的元组。例如:
nb.types.Tuple.from_types([
nb.types.ListType(nb.types.int32),
nb.types.float64,
nb.types.int64
])
这是一种包含 3 个元素的元组:一个 32 位整数列表、一个 64 位浮点数和一个 64 位整数。
根据你的代码,我猜你想要这个:
out_style = nb.types.Tuple.from_types([
nb.types.ListType(nb.float64[:,:]),
nb.types.DictType(nb.types.unicode_type, bb2),
nb.types.NPDatetime('M'),
nb.types.NPTimedelta('M')
])
我有一个 jitclass 说 weather
并保存它的一个属性 att = weather.class_type.instance_type
以在另一个 jit 函数中使用来指定它的输出样式。
out_style = Tuple.from_types((ListType(att)))
@jit([out_style(nb.int64, nb.int64)], nopython=True)
def new_function():
......
该属性打印如下。
27725c129d0<_data:array(float64, 2d, A),_colmap:DictType[unicode_type,int64]<iv=None>,date0:datetime64[M],_tdelta:timedelta64[M]>
现在想把这个jitclass去掉,还是想手动指定这个属性再用。我看到有四种数据类型,array(float64, 2d, A)
、DictType[unicode_type,int64]
、datetime64[M]
和 timedelta64[M]
我是这样声明的,但是报错如下
out_style = Tuple.from_types((ListType(nb.types.Array(nb.float64, 2, 'A'), DictType(nb.types.unicode_type, bb2), nb.types.NPDatetime('M'), nb.types.NPTimedelta('M')))
TypeError: __init__() takes 2 positional arguments but 5 were given
请帮助解决这个问题。谢谢。
我不确定我是否理解正确。 ListType()
只能包含一个参数。就我而言,我在 ListType()
中添加了四个。它会导致错误。这里 att
的类型是 classinstancetype
。由于 jitclass
如前所述被删除,哪种数据类型是一个很好的选择,tuple?
nb.types.Tuple.from_types
在参数中获取一个列表,该列表应包含每种类型的元组。例如:
nb.types.Tuple.from_types([
nb.types.ListType(nb.types.int32),
nb.types.float64,
nb.types.int64
])
这是一种包含 3 个元素的元组:一个 32 位整数列表、一个 64 位浮点数和一个 64 位整数。
根据你的代码,我猜你想要这个:
out_style = nb.types.Tuple.from_types([
nb.types.ListType(nb.float64[:,:]),
nb.types.DictType(nb.types.unicode_type, bb2),
nb.types.NPDatetime('M'),
nb.types.NPTimedelta('M')
])