我有三个限制,并且像往常一样,我只能弄清楚如何同时满足其中任何两个:
我目前正在使用numpy ndarrays来存储每列中不同类型的数据。我已初始化数组,因此它可以存储多种数据类型:
norm = numpy.empty((79, len(header)), dtype=numpy.object)
我一直在使用标题(字符串名称列表)作为列名的代理(然后查找标题中值的索引),但这看起来真的很笨拙。
我环顾四周,但据我所知,当您使用列名(和类型)初始化数组时,必须使用值填充数组,如:Store NumPy Row and Column Headers < / p>
因为当我尝试这样的事情时:
n=numpy.empty((5,2), dtype=[("sub", "str"), ("words", Decimal)])
n[0] = ['06', Decimal(10)]
我收到此错误:
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
ValueError: Setting void-array with object members using buffer.
答案 0 :(得分:2)
试试这个:
>>> n = numpy.empty((5,2), dtype=[("sub", "S10"), ("words", Decimal)])
>>> n[0] = ('06', Decimal(10))
>>> print n
[[('06', Decimal('10')) ('06', Decimal('10'))]
[('', None) ('', None)]
[('', None) ('', None)]
[('', None) ('', None)]
[('', None) ('', None)]]
正如@seberg所提到的,你想要设置一个元组而不是一个列表。您还需要指定要存储在“sub”中的字符串的长度。 Numpy结构化数组不存储任意长度的字符串,您需要选择最大长度。如果您真的无法选择最大长度,请使用object
代替str
。