рисование графика для функции с 2 аргументами в Python - PullRequest
0 голосов
/ 16 февраля 2019

Мне нужно нарисовать график для простой функции, определенной на интервале.

import numpy as np
from matplotlib import pylab as plt

def sqr(x, n=2):
    return float(x ** n)

def get_plot(func, xs, n):
    ys = []
    for x in xs:
        ys.append(func(x, n))
        ys = np.array(ys)
    plt.plot(xs, ys)

xs = np.arange(1.0, 30., 0.01)
get_plot(sqr, xs, 4)

Но это дает мне typeError:

TypeError: get_plot() takes exactly 2 arguments (3 given)

1 Ответ

0 голосов
/ 16 февраля 2019

Помимо орфографической ошибки в имени функции, вы должны преобразовать свой список в массив вне цикла for, как только вы закончите добавление всех функций.Более того, я не понимаю, почему вы делаете код настолько сложным, когда вы можете просто использовать векторизованную операцию для вашего массива NumPy xs как ys=xs**4

import numpy as np
from matplotlib import pylab as plt

def sqr(x, n=2):
    return float(x ** n)

def get_plot(func, xs, n):
    ys = []
    for x in xs:
        ys.append(func(x, n))
    ys = np.array(ys) # <-- moved outside the for loop
    plt.plot(xs, ys)

xs = np.arange(1.0, 30., 0.01)
get_plot(sqr, xs, 4)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...