是否可以创建一个行为非常类似于collections.namedtuple,从某种意义上说,可以这样访问元素:
data[1] = 42
data['start date'] = '2011-09-20' # Slight generalization of what is possible with a namedtuple
我试图使用复杂的数据类型:
^{pr2}$这将创建一个具有一种namedtuple类型的0维值;它几乎可以工作:
>>> data['start date'] = '2011-09-20'
>>> data
array(('2011-09-20', -3241474627884561860),
dtype=[('start date', '|S11'), ('n', '<i8')])
但是,元素访问不起作用,因为“数组”是0维的:
>>> data[0] = '2011-09-20'
Traceback (most recent call last):
File "<ipython-input-19-ed41131430b9>", line 1, in <module>
data[0] = '2011-09-20'
IndexError: 0-d arrays can't be indexed.
有没有一种方法可以用NumPy对象获得上面描述的所需行为(通过字符串和索引进行项分配)?在
(根据EOL的建议进行编辑,以便在回答问题时更加具体。)
创建0维数组(我也没有找到标量构造函数。)
0维数组中的访问元素
^{pr2}$我认为最简单的方法是将结构化数组(或recarray)看作元组的列表或数组,而索引是根据选择列的名称和选择行的整数进行的。在
零维数组,元素是元组,即一条记录,已更改:不是标量元素,请参见末尾
有一个元素的数组
一维阵列
直接索引到单个记录中,与EOL的示例中相同,我不知道它是否有效
试图理解EOL的例子:标量元素和零维数组是不同的
(注意:我无意中在一个开放的python3.2解释器中输入了这个示例,因此有一个b'…')
这是由Pandas包中的“Series”很好地实现的。在
例如从tutorial:
我已经玩了几天了,但它看起来有很多功能。在
您可以使用
numpy.rec
模块执行类似的操作。您需要的是这个模块中的record
类,但我不知道如何直接创建此类的实例。一种直接的方法是首先用一个条目创建一个recarray
:如果您知道如何直接创建
record
的实例,请告诉我。在相关问题 更多 >
编程相关推荐