Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将字符串写入numpy数组?_Python_Python 3.x_Csv_Numpy - Fatal编程技术网

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

Python 如何将字符串写入numpy数组?,python,python-3.x,csv,numpy,Python,Python 3.x,Csv,Numpy,我有两个属性age(float)和name(string)属于一个人。我想将它们写入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]=ag

我有两个属性age(float)和name(string)属于一个人。我想将它们写入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)
我弄错了

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


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

旧版本的numpy有chararray和numarray,但现在您只需传递一个数据类型,告诉numpy数组需要包含的不仅仅是数字。使用dtype=str时,每个元素只接受一个字符串,因此您将得到“a”“a”“a”…,而不是整个字符串“abc”。要获得该值,需要将
对象
作为数据类型传递

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']]

旧版本的numpy有chararray和numarray,但现在只需传递一个数据类型,告诉numpy数组需要包含的不仅仅是数字。使用dtype=str时,每个元素只接受一个字符串,因此您将得到“a”“a”“a”…,而不是整个字符串“abc”。要获得该值,需要将
对象
作为数据类型传递

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']]

您可以将
dtype=object
传递给
np.empty
,或者在效率重要的情况下使用自定义数据类型。
age\u name=np.empty((2,10),dtype=str)
和print(age\u name)将是
[[8''2''6''4''9''9''7''6''2''4'][a''a''a''a''a''a''a']。我理解错了,因为它用了空格。谢谢但解决方案无法写入csv文件。让我们试试np.savetxt(“age_name.csv”,age_name,delimiter=“,”)您可以将
dtype=object
传递到
np.empty
,或者如果效率很重要,可以使用自定义数据类型。
age_name=np.empty((2,10),dtype=str)和print(age_name)将
[[8''2''6''4''9''9''7''6''2''4''a''a''a''a''a''a''a''a''a']
对不起。我理解错了,因为它用了空格。谢谢但解决方案无法写入csv文件。让我们试试np.savetxt(“age\u name.csv”,age\u name,delimiter=“,”),它可以工作。谢谢但解决方案无法写入csv文件。让我们试试它
np.savetxt(“age\u name.csv”,age\u name,delimiter=“,”)
@John您必须在使用numpy.savetxt的格式中包含一个字符串。试试看:
np.savetxt(“age\u name.csv”,age\u name,delimiter=“,”,fmt=“%s”)
。谢谢但解决方案无法写入csv文件。让我们试试它
np.savetxt(“age\u name.csv”,age\u name,delimiter=“,”)
@John您必须在使用numpy.savetxt的格式中包含一个字符串。尝试:
np.savetxt(“age\u name.csv”,age\u name,delimiter=“,”,fmt=“%s”)