Функция 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)?






