例如:
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)
更长:我问的原因是,python 的列表行为正确并保留各种元素的数据类型,而 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.array() 表现得像 python 列表并保留不同的数据类型。
请您参考如下方法:
Python 的数组不是 C 中的数组,而是指向对象的指针数组,其中包含您输入的数据。对象保留自己的类型信息,python 很高兴,因为真正的数组是统一的(所有指针)。
另一方面,Numpy 获取您的数据并更改其类型,以便所有内容都是同一类型。在这种情况下,它们都被更改为字符串,因为您至少给了它一个字符串。所以你不应该按照你引用的方式使用 numpy 数组(作为编码器的输入向量),而是使用 python 数组。
如果您在谈论编码器列表,您可以询问编码器它的类,它会告诉您它期望的数据类型(针对接受字符串/类别的编码器基类的测试可能会这样做)。
在 NuPIC 中,MultiEncoder.encoders 数组是一个 python 数组,而不是一个 numpy 数组。
