通过使用 np.meshgrid 生成二维矩阵坐标的例子理解meshgrid的作用
import numpy as np
w = 12
h = 13
x = np.arange(0, w)
y = np.arange(0, h)
'''
x: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
y: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
'''
# 将x视为行向量 重复 y.shape[0] = 13 次
# 将y视为列向量 重复 x.shape[0] = 12 次
xx, yy = np.meshgrid(x, y)
'''
xx:
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
yy:
array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
[ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
[ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7],
[ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]])
'''
# 有了xx和yy之后就可以得到各种在二维矩阵坐标下的距离
## 例如 1:
xx + yy # 相对坐标1
'''
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
[ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
[ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
[ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
[ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
[ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
[ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22],
[12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])
'''
## 例如 2:
xx + yy * w # 相对坐标2
'''
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
[ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35],
[ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47],
[ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71],
[ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83],
[ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95],
[ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107],
[108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119],
[120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131],
[132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143],
[144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155]])
'''
## 例如 3:
np.sqrt(xx**2+yy**2) # 距离原点的距离