TypeError: ufunc 'multiply' не содержит цикла с сигнатурой, соответствующей типам dtype ('S32') dtype ('S32') dtype ('S32')


Я новичок в программировании,но я пытаюсь создать действительно простую программу, которая будет в основном строить линию. Пользователь вводит значения для v и a, а затем v и a и x определяют y. я попытался сделать это с помощью следующего:

x = np.linspace(0., 9., 10)
a = raw_input('Acceleration =')
v = raw_input('Velocity = ')
y=v*x-0.5*a*x**2.
В основном это будет представлять собой параболу, где v-скорость, a-ускорение, а x-время. Но, я продолжаю получать эту ошибку:
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('S32'
) dtype('S32') dtype('S32')
2 7

2 ответа:

Из документации raw_input:

Затем функция считывает строку из входных данных, преобразует ее в строку (очищая конечную новую строку) и возвращает ее.

Получается, что вы пытаетесь умножить строку с плавающей точкой, что-то вроде y="3" * x - 0.5 * "3" *x**2, которая не определена.

Самый простой способ обойти это-сначала привести входную строку в состояние float.

x = np.linspace(0., 9., 10)
a = float(raw_input('Acceleration ='))
v = float(raw_input('Velocity = '))
y=v*x-0.5*a*x**2

Имейте в виду, что если вы используете python 3, вам нужно использовать inputвместо raw_input,

a = float(input('Acceleration ='))

Недавно я столкнулся с этой проблемой, изменив dtype x на что-то конкретное, выполнив:

x = np.asarray(x, dtype='float64')