#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
doimport 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