Python 如何将字符串写入numpy数组?
我有两个属性age(float)和name(string)属于一个人。我想将它们写入csv文件,因此,我使用numpy存储数据,然后将其写入csvPython 如何将字符串写入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
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”)