Функция matplotlib.pyplot.contour()
принимает 3 входных массива X
, Y
и Z
.
Массивы X
и Y
определяют x- и y-координаты точек, а Z
задает соответствующее значение интересующей функции, оцениваемой в точках.
Я понимаю, что np.meshgrid()
позволяет легко создавать массивы, которые служат аргументами для contour()
:
X = np.arange(0,5,0.01)
Y = np.arange(0,3,0.01)
X_grid, Y_grid = np.meshgrid(X,Y)
Z_grid = X_grid**2 + Y_grid**2
plt.contour(X_grid, Y_grid, Z_grid) # Works fine
Это прекрасно работает. И удобно, это отлично работает:
plt.contour(X, Y, Z_grid) # Works fine too
Однако почему вход Z
требуется как 2D-массив?
Почему что-то вроде следующего недопустимо, хотя он указывает все одинаковые данные, соответствующие соответствующим образом?
plt.contour(X_grid.ravel(), Y_grid.ravel(), Z_grid.ravel()) # Disallowed
Кроме того, что такое семантика, когда указан только Z
(без соответствующих X
и Y
)?