Построение графиков с использованием arange для определения переменных

#python #python-3.x #matplotlib

#python #python-3.x #matplotlib

Вопрос:

Недавно я начал изучать Python.

Я узнал, что для определения независимой переменной (z в примере ниже) вы можете написать с помощью numpy.linspace():

 from matplotlib import pyplot as pp
import numpy as np
from math import pi

#z=np.linspace(1,-1) z definition works
z=np.arange(1,-1) #z definition does not work
w=z

pp.plot(z,w)
pp.xlabel("Input")
pp.ylabel("Output")
pp.title("Function")
pp.show()
print(z,w)

  

Однако, если мы определяем z с помощью np.arange (см. Строку с комментариями), кажется невозможным отобразить график (график не отображается).
Если я хочу использовать последнее определение для независимой переменной, могу ли я по-прежнему отображать другую переменную или я вынужден использовать определение linspace?
Спасибо

Комментарии:

1. Это потому np.arange(1, -1) , что пытается перейти от 1 к -1 с шагом (по умолчанию) 1. Если вы проверяете значение z made из этого оператора, оно должно быть пустым массивом.

Ответ №1:

np.linspace(1, -1) создает массив чисел, который начинается 1 и заканчивается -1 . По умолчанию выполняется 50 шагов, поэтому каждый шаг имеет длину -2/49 . Обычно количество шагов задается явно, например np.linspace(1, -1, 200) . Стандартно начальное значение выбирается меньшим, чем значение остановки, но работают оба способа.

np.arange(1, -1) создает массив, начинающийся с 1, добавляя шаг (по умолчанию 1), и заканчивается, когда значение больше или равно значению остановки. Итак, в этом случае он просто немедленно останавливается, создавая пустой массив. np.arange(1, -1, -1) будет выполнять шаги -1 и создавать массив [1, 0] , останавливаясь непосредственно перед -1 этим.

Магия Numpy начинается, когда эти массивы используются в выражениях, как если бы они были отдельными переменными. Это называется широковещательной передачей.

Вот пример графика, который показывает работу np.linspace . w вычисляется только для 50 заданных значений z . Обратите внимание, что, хотя z создается от 1 до -1 , график по умолчанию показывает положительную сторону справа. Также обратите внимание, что стандартным способом импорта matplotlib является as plt , что упрощает для других людей следование коду.

 from matplotlib import pyplot as plt
import numpy as np

z = np.linspace(1, -1)
w = np.sin(z * np.pi)
plt.plot(z, w, '-bo')
plt.xlabel('$z$')
plt.ylabel(r'$w = sin(z * pi)$')
plt.show()
  

пример построения