无法将字符串元素添加到numpy零数组中

时间:2017-08-21 11:40:55

标签: python arrays numpy

我是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因为它更容易实现更大尺寸的数组并进行编辑。 我试图改变数组的数据类型,但我找不到合适的数据类型。

1 个答案:

答案 0 :(得分:3)

  1. 如果你真的,真的想要一个混合数据类型的数组,请使用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)
    
  2. 现在,你可能真的不想这样,因为对象数组相当无用,而且大多数numpy函数都不能用它们。例如,如果要将数据库导入数组,则需要使用Structured Array。这样您就可以通过numpy

  3. 以这种方式混合使用字符串和数字。
  4. 如果您真的想要一种使用有效索引方案处理大型数据库的方法,您可能根本不需要numpy,而是想要pandas或甚至{ {1}}。 dask针对计算而非存储进行了优化。