почему я получаю "объект numpy.ndarray не может быть вызван" с помощью оператора if - PullRequest
0 голосов
/ 10 марта 2019

Я новичок в программировании, и я пытаюсь построить график, на котором я хочу, чтобы моя функция "y" отличалась определенным условием x. Вот как я пытался это сделать:

import matplotlib.pyplot as plt

import numpy as np

x= np.arange(0,10,0.1)

if x(x<5):
    y=x
else:
    y=0

plt.plot(x,y)
plt.show()

Ответы [ 2 ]

1 голос
/ 10 марта 2019
plt.plot(x, [x_ if x_ < 5 else 0 for x_ in x])

Метод построения графика отображает x и y в виде линий и / или маркеров. Массив y создается на основе значений массива x с использованием списка

y = [x_ if x_ < 5 else 0 for x_ in x]

Это точно так же, как

y = list()
for i in range(len(x)):
   if x[i] < 5:
     y.append(x[i])
   else:
     y.append(0)
0 голосов
/ 10 марта 2019

Ошибка происходит от x(x<5).Python анализирует первый x как функцию и пытается вызвать его для аргумента x<5, что приводит к ошибке, потому что x это не функция, которую вы можете вызвать, это numpy.ndarray, что объясняет numpy.ndarray object is not callable ошибка.

Попробуйте это:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.1)
y = [(xx if xx<5 else 0) for xx in x]

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