#python #arrays #string #dtype
#python #массивы #строка #dtype
Вопрос:
У меня есть набор данных в массиве, как показано ниже.
P=array([['984.6'],
['983.9'],
['983.2'],
...,
['7.8'],
['7.8'],
[' ']], dtype=object)
Когда я выполняю какую-либо арифметическую операцию, она выдает ошибку. например, я пробовал Sub = P - P
тогда
`TypeError: unsupported operand type(s) for -: 'str' and 'str'`
Пожалуйста, предложите для того же
Комментарии:
1. Вы уверены, что вам нужны строки в массиве? Не фактические числовые значения?
2. Сообщение об ошибке в значительной степени говорит само за себя. В вашем массиве нет чисел. Все эти значения являются строками.
'7.8'
является строкой.7.8
является числом. Они не совпадают. Вы не можете вычитать строки. Вам нужно преобразовать строки в числа, например,float('7.8')
, что7.8
равно.3. @сушантх
ValueError: could not convert string to float:
4. @TomKarzes Я пробовал И это
float(n) for n in s.split()]
, но не сработало5. Вместо этого попробуйте
P=array([[984.6],[983.9],...)
без одинарных кавычек вокруг чисел.
Ответ №1:
Ваш массив заполнен строками вместо чисел с плавающей точкой. Это выдает ошибку, потому что вы пытаетесь выполнить арифметическую операцию над строковыми переменными.
Ответ №2:
Отображается ошибка, поскольку вы не можете вычесть две строки, сначала вам нужно ввести приведение этих строк к целому числу с использованием int (str) или float с использованием float (str)
Комментарии:
1. Я пробовал с
int(P)
илиeval(P)
, ноTypeError: only size-1 arrays can be converted to Python scalars
Ответ №3:
@Addy
вы не можете ввести приведение к 2-d напрямую, используя int (p), вам нужно выполнить итерацию по нему другим методом для приведения к типу всего массива является
new_array = P.astype(np.float)
надеюсь, это сработает для вас 🙂