Значения с плавающей запятой в списке становятся строковыми при преобразовании списка в массив numpy

#python #arrays #list #numpy

#python #массивы #Список #numpy

Вопрос:

У меня есть список (оценки), который содержит значения с плавающей запятой, и я хочу преобразовать его в массив numpy. Однако после его преобразования тип значений изменяется с float на string . Это то, что я написал:

 scores = [5.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0]
import numpy as np 
scores = np.array(scores)
scores = ['5.0' '5.0' '4.0' ... '5.0']
 

Я попытался преобразовать значения в float еще раз:

 scores = np.asarray(scores, dtype=np.float64, order='C')
 

Однако появляется следующая ошибка:

 ValueError: could not convert string to float:
 

Как я могу преобразовать список в массив numpy таким образом, чтобы тип значений не менялся?

Комментарии:

1. Покажите scores , если не все , достаточно, чтобы мы могли понять типы элементов в этом списке. Список python может содержать что угодно, строки, числа, другие списки и т. Д. Ошибка сообщает мне, что список содержит строки, которые не представляют числа. Такое сообщение об ошибке обычно показывает строку, которая вызвала проблему. Вы намеренно отключили это? Почему?

2. Исходный список содержит только значения с плавающей запятой.

3. Ваш массив numpy также имеет floats . Где вы видели строки? Проверьте scores.dtype . Должно быть 'numpy.float64' .

4. Вы используете numpy и np . Если вы хотите использовать np do import numpy as np .

5. В этом списке должна быть хотя бы одна строка. Что это?

Ответ №1:

Я не думаю, что они преобразуются в строку, я попробовал ваш код и добавил простую строку сложения между двумя индексами, и результат не в строке означает, что они не объединены, они являются фактическими десятичными числами.

 scores = [5.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0]
import numpy 
scores = numpy.array(scores)
print(scores[0] scores[1])
 

Комментарии:

1. Это то, что я получаю, когда пробую ваш код: «5.05.0» Строки объединяются. Значения с плавающей запятой не были добавлены.

Ответ №2:

Если у вас есть numpy-список string dtype , используйте y = scores.astype(np.float) для преобразования его в float type