使用MultiEncoder,我有一个数组编码器[],我想知道,编码器接受什么数据类型。这怎么可能?

2024-04-25 05:39:23 发布

您现在位置:Python中文网/ 问答频道 /正文

例如:

encoders = {SDRCategoryEncoder, ScalarEncoder} 
do_magic_and_answer_me_type(encoders[0]) // I want string
do_magic_and_answer_me_type(encoders[1]) // int   (or python equivalents)

Longer:我问这个问题的原因是,python的list行为正确,并保留了各种元素的数据类型,而numpy数组则转换为公共类型。你知道吗

    >>>a=[1, 'sweet', 2]
    >>>type(a)
    type 'list'>

    >>> type(a[0])
    type 'int'>

    >>> type(a[1])
    type 'str'>

    >>> import numpy
    >>> na = numpy.array(a)
    >>> type(na)
    type 'numpy.ndarray'>

    >>> type(na[0])
    type 'numpy.string_'>

    >>> type(na[1])
    type 'numpy.string_'>

    >>> 

总之,我想告诉编码器需要什么样的输入数据类型,或者 制造numpy.数组()的行为类似于python列表,并保留不同的数据类型。你知道吗


Tags: andanswernumpystringtypemagic数组do
1条回答
网友
1楼 · 发布于 2024-04-25 05:39:23

Python的数组不像C中那样是一个数组,而是一个指向包含您放入的数据的对象的指针数组。对象保留自己的类型信息,python很高兴,因为真正的数组是统一的(所有指针)。你知道吗

另一方面,Numpy获取数据并更改其类型,以便所有内容都是相同的类型。在本例中,它们都被更改为string,因为您至少给了它一个string。因此,您不应该以引用的方式使用numpy数组(作为编码器的输入向量),而应该使用python数组。你知道吗

如果您谈论的是编码器列表,您可以询问编码器它的类,这将告诉您它期望的数据类型(对接受字符串/类别的编码器基类的测试可能会做到这一点)。你知道吗

在NuPIC中多重编码器数组是python数组,不是numpy数组。你知道吗

相关问题 更多 >