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

Joh*_*ohn 1 python csv numpy python-3.x

我有两个属于一个人的属性年龄(浮点)和姓名(字符串)。我想将它们写入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)
Run Code Online (Sandbox Code Playgroud)

我收到错误

回溯(最近一次调用最后一次):文件“python”,第 9 行,在 ValueError:无法将字符串转换为浮点数:'ABC'

这可能不是一个好的选择,因为数据既有字符串又有浮点数,你能给我建议一种可以轻松存储到 csv 文件的好方法吗?

小智 5

旧版本的 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']]
Run Code Online (Sandbox Code Playgroud)