Как записать строку в массив numpy? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть два атрибута 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)

Я получил ошибку

Traceback (последнийвызовите последний): файл "python", строка 9, в ValueError: не удалось преобразовать строку в число с плавающей точкой: 'ABC'

Это может быть плохим вариантом, поскольку данные имеют как строку, так и число с плавающей запятойномер, не могли бы вы предложить мне хороший способ, который можно легко сохранить в CSV-файл?

1 Ответ

0 голосов
/ 06 декабря 2018

В старых версиях 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']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...