ValueError: операнды не могут быть переданы вместе с формами (400,) (2,)

По какой-то причине я получаю объект модуля не вызываемой ошибкой в ​​этом коде... и я действительно не понимаю, почему?

def func (t,a,x):
return
`plt.plot(t,(exp(a*t))*x(), label="lalala")` 

.... и обратная связь

plt.plot(t,(exp(a*t))*x(), label="lalala") TypeError: 'numpy.ndarray' object is not callable

после изменения х () на х

x=np.array([1,100])
t=np.linspace(1,10,400)
def func (t,a,x):
    return plt.plot(t,(exp(a*t))*x, label="lalala")

Теперь я получаю:

ValueError: операнды не могут быть переданы вместе с формами (400,) (2,)

Цель состоит в том, чтобы сделать эскиз с помощью функции:

exp(a*t)*x со временем t...=>y= exp(a*t)*x

на оси у, а т является осью х.

a постоянная времени отверстия, t(1,10,400) а также x(1,100) изменения.

1 ответ

Немного трудно знать наверняка, что вы ищете, но из ваших правок видно, что у вас есть два значения: x Вы хотите построить график y = x.exp(в) для временного диапазона t=np.linspace(1,10,400), В таком случае:

import numpy as np
import matplotlib.pyplot as plt
a = 2
x = np.array([1,100])
t=np.linspace(1,10,400)
def func(t, a, z):
    return z * np.exp(a * t)

plt.plot(t,func(t, a, x[0]))
plt.plot(t,func(t, a, x[1]))

Вы получаете ошибку, потому что x это массив из двух значений, и NumPy не (без какой-либо помощи) не знает, как "передать" эти два значения по отношению к вашему временному массиву. Если ты хочешь func производить массив формы (2,400) в ответ на вход xиспользовать np.newaxis создать недостающую вторую ось в x массив:

func(t, a, x[:,np.newaxis])
Другие вопросы по тегам