Модулът numpy на Python предоставя meshgrid() функция за създаване на правоъгълна мрежа с помощта на дадените 1-D масиви, които представляват Матрично индексиране или Декартово индексиране . MATLAB донякъде вдъхновява функцията meshgrid(). От координатните вектори функцията meshgrid() връща координатните матрици.
На горната фигура оста x е в диапазона от -5 до 5, а оста y е в диапазона от -5 до 5. Така че на фигурата са отбелязани общо 121 точки, всяка с x-координата и y-координата. За всяка линия, успоредна на оста x, координатите x на маркираните точки са съответно -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 и 5. От друга страна, за всяка права, успоредна на оста y, y-координатите на маркираните точки отдолу нагоре са -5, -4, -3, -2, -1, 0, 1, 2, 3 , 4 и 5 съответно.
Синтаксис
numpy.meshgrid(*xi, **kwargs)
Параметри
x1, x2,…, xn : array_like
какво е команда за експортиране в linux
Този параметър дефинира едномерния масив, който представлява координатите на мрежа.
индексиране: {'xy', 'ij'}(по избор)
Това е незадължителен аргумент, който дефинира декартово 'xy' (по подразбиране) или матрично ('ij') индексиране на изхода.
разреден: bool (по избор)
Този параметър също не е задължителен. Ако се нуждаем от рядка мрежа за запазване на паметта, трябва да зададем този параметър на True. По подразбиране е зададено False.
копие: bool (по избор)
Целта на този незадължителен аргумент е да върне копие на оригиналния масив за запазване на паметта. По подразбиране е зададено False.
Ако и двете рядък и копие параметрите са зададени на False, тогава ще върне несъседни масиви. В допълнение, повече от един елемент от разпръскван масив може да се отнася до едно място в паметта. Ако трябва да пишем в масивите, първо трябва да направим копия.
Се завръща
X1, X2, ..., Xn
Координатната дължина от координатния вектор се връща от тази функция.
Пример 1:
import numpy as np na, nb = (5, 3) a = np.linspace(1, 2, na) b = np.linspace(1, 2, nb) xa, xb = np.meshgrid(a, b) xa xb
Изход:
array([[1. , 1.25, 1.5 , 1.75, 2. ], [1. , 1.25, 1.5 , 1.75, 2. ], [1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. , 1. , 1. , 1. , 1. ], [1.5, 1.5, 1.5, 1.5, 1.5], [2. , 2. , 2. , 2. , 2. ]])
В горния код
- Импортирахме numpy с псевдоним np.
- Създадохме две променливи, т.е. na и nb, и присвоихме стойностите съответно 5 и 3.
- Създадохме два масива, т.е. a и b с помощта на функцията linspace().
- След това декларирахме променливите 'xa' и 'xb' и присвоихме върнатата стойност на meshgrid()
- Предадохме и двата масива 'a' и 'b' във функцията
- Накрая се опитахме да отпечатаме стойността на 'шах' и 'xb' .
В изхода са показани два масива, които съдържат координатната дължина от координатните вектори.
история в java
Пример 2:
import numpy as np na, nb = (5, 3) a = np.linspace(1, 2, na) b = np.linspace(1, 2, nb) xa, xb = np.meshgrid(a, b, sparse=True) xa xb
Изход:
array([[1. , 1.25, 1.5 , 1.75, 2. ]]) array([[1. ], [1.5], [2. ]])
Пример 3:
import numpy as np import matplotlib.pyplot as plt a = np.arange(-10, 10, 0.1) b = np.arange(-10, 10, 0.1) xa, xb = np.meshgrid(a, b, sparse=True) z = np.sin(xa**2 + xb**2) / (xa**2 + xb**2) h = plt.contourf(a,b,z) plt.show()
Изход:
В горния код
- Импортирахме numpy с псевдоним np.
- Импортирахме matplotlib.pyplot като plt.
- Създадохме два масива, т.е. a и b с помощта на функцията np.arange().
- След това декларирахме променливите 'xa' и 'xb' и присвоихме върнатата стойност на meshgrid()
- Предадохме и двата масива 'a' и 'b' във функцията.
- След това сме декларирали променлива z и сме присвоили върнатата стойност на функцията np.sine().
- Накрая се опитахме да начертаем контурни линии и запълнени контури с помощта на plt.contourf()
В резултата са изчертани контурни линии.
Пример 4:
import numpy as np import matplotlib.pyplot as plt a = np.linspace(-5, 5, 5) b = np.linspace(-5, 5, 11) random_data = np.random.random((11, 5)) xa, xb = np.meshgrid(a, b) plt.contourf(xa, xb, random_data, cmap = 'jet') plt.colorbar() plt.show()
Изход:
Пример 5:
import numpy as np import matplotlib.pyplot as plt a = np.linspace(-5, 5, 5) b = np.linspace(-5, 5, 11) random_data = np.random.random((11, 5)) xa, xb = np.meshgrid(a, b) sine = (np.sin(xa**2 + xb**2))/(xa**2 + xb**2) plt.contourf(xa, xb, sine, cmap = 'jet') plt.colorbar() plt.show()
Изход: