我是python和numpy的新手,我想创建一个混合数据类型的数组,但是我收到了这个错误:
>>> m = np.zeros((5,10))
>>> m[0,0] = 'e'
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
m[0,0] = 'e'
ValueError: could not convert string to float: e
我使用numpy因为它更容易实现更大尺寸的数组并进行编辑。 我试图改变数组的数据类型,但我找不到合适的数据类型。
答案 0 :(得分:3)
如果你真的,真的想要一个混合数据类型的数组,请使用dtype = object
。
m = np.zeros((5,10), dtype = object)
m[0,0] = 'e'
m
Out[105]:
array([['e', 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=object)
现在,你可能真的不想这样,因为对象数组相当无用,而且大多数numpy
函数都不能用它们。例如,如果要将数据库导入数组,则需要使用Structured Array。这样您就可以通过numpy
如果您真的想要一种使用有效索引方案处理大型数据库的方法,您可能根本不需要numpy
,而是想要pandas
或甚至{ {1}}。 dask
针对计算而非存储进行了优化。