如何将字符串写入numpy数组?

时间:2018-12-06 20:32:07

标签: python python-3.x csv numpy

我具有属于一个人的两个属性age(浮动)和name(字符串)。我想将它们写入csv文件,因此,我使用numpy存储数据,然后将其写入csv。

import numpy as np
import random
age_name = np.empty((2, 10))
print (age_name.shape)
for i in range (10):
    age = random.randint(0,100)
    name =  'ABC'
    age_name[0,i]=age
    age_name[1,i]=name
print (age_name)

我得到了错误

  

回溯(最近通话最近):     在第9行输入文件“ python”   ValueError:无法将字符串转换为float:'ABC'

这不是一个好的选择,因为数据同时具有字符串和浮点数,您能给我建议一种易于存储到csv文件的好方法吗?

1 个答案:

答案 0 :(得分:3)

较早版本的numpy具有chararrays和numarrays,但是现在您只需传递dtype来告诉numpy,该数组需要包含的不仅仅是数字。使用dtype = str每个元素只需要一个字符串,因此您将获得“ a”,“ a”,“ a” ...,而不是整个字符串“ abc”。为此,您将object作为dtype。

import numpy as np
import random
age_name = np.zeros((2, 10), dtype=object)
print (age_name)
for i in range (10):
    age = random.randint(0,100)
    name =  'ABC'
    age_name[0,i]=age
    age_name[1,i]=name
print (age_name)

>>>[[0 0 0 0 0 0 0 0 0 0]
>>> [0 0 0 0 0 0 0 0 0 0]]
>>>[[24 67 72 59 44 4 71 16 17 82]
>>> ['ABC' 'ABC' 'ABC' 'ABC' 'ABC' 'ABC' 'ABC' 'ABC' 'ABC' 'ABC']]