Numpy и Matplotlib - AttributeError: у объекта 'numpy.ndarray' нет атрибута 'replace' - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать график с matplotlib в python, используя log значений столбца данных, но я продолжаю сталкиваться с этой ошибкой,

Трассировка (последний вызов был последним):
Файл "/home/PycharmProjects/proj1/test.py", строка 158, в

graph(file_path)   

Файл "/home/PycharmProjects/proj1/test.py", строка 90, на графике

y = np.array(np.log2(y1).replace(-np.inf, 0)) 

AttributeError: у объекта 'numpy.ndarray' нет атрибута 'replace'

Ниже приведен код,

def graph(file_path):
    dataset1 = pandas.read_csv(file_path)
    data1 = dataset1.iloc[:, 5]
    x, y1 = get_pdf(data1)
    y = np.array(np.log2(y1).replace(-np.inf, 0))

    plt.figure()
    plt.plot(x, y, color= 'g', label = 'Test')

    plt.legend()
    output_image = "fig1.png"
    plt.savefig(output_image)
    plt.close()
    plt.figure()

Я был бы очень признателен за помощь в решении этой проблемы.Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

С log2 a 0 выдает предупреждение и -inf:

In [537]: x = np.arange(5.)
In [538]: np.log2(x)
/usr/local/bin/ipython3:1: RuntimeWarning: divide by zero encountered in log2
  #!/usr/bin/python3
Out[538]: array([     -inf, 0.       , 1.       , 1.5849625, 2.       ])

Но log2 является ufunc и принимает параметры where и out, которые могут бытьиспользуется для обхода этого предупреждения:

In [539]: out = np.zeros_like(x)
In [540]: np.log2(x, out=out, where=x>0)
Out[540]: array([0.       , 0.       , 1.       , 1.5849625, 2.       ])
In [541]: out
Out[541]: array([0.       , 0.       , 1.       , 1.5849625, 2.       ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...