z = np.mgrid[a:X:m, b:y:n]
z = np.mgrid[a:X:cj, b:y:dj]
利用到广播机制进行扩充
# z = np.mgrid[a:x:m, b:y:n] 两个参数,生成一个三维空间向量由两个数组z[0]和z[1]组成,步长分别为m和n, [a, x) [b, y)
# 第二种:z = np.mgrid[a:x:cj, b:y:dj] 生成平均分为c/d个元素,左闭右闭,[a, x] [b, y]
# 例如第一种:
# 两个数组的行数由函数第一个参数决定(2 3 4),共三行;列数由第二个参数决定(1 2)共两列;默认步长为1,左闭右开;分成的元素由mn或cd决定
# 第一个数组z[0]的元素由第一个参数决定(2 3 4),共三种元素;第二个数组z[1]的元素由第二个参数决定(1 2),共两种元素
# 第一个数组z[0]的元素行相同;第二个数组z[1]的元素列相同
z = np.mgrid[2:5, 1:3] # 默认步长为1,左闭右开
x, y = z[0], z[1]
print('x=', x)
print('y=', y)
# 结果:
# x= [[2 2]
# # [3 3]
# # [4 4]]
# # y= [[1 2]
# # [1 2]
# # [1 2]]
z = np.mgrid[2:5, 3:4]
x, y = z[0], z[1]
print('x=', x)
print('y=', y)
# 结果:
# x= [[2]
# [3]
# [4]]
# y= [[3]
# [3]
# [3]]
z = np.mgrid[2:5:0.5, 1:3:1] # 步长分别为0.5和1,左闭右开
x, y = z[0], z[1]
print('x=', x)
print('y=', y)
# 结果:
# x= [[2. 2. ]
# [2.5 2.5]
# [3. 3. ]
# [3.5 3.5]
# [4. 4. ]
# [4.5 4.5]]
# y= [[1. 2.]
# [1. 2.]
# [1. 2.]
# [1. 2.]
# [1. 2.]
# [1. 2.]]
z = np.mgrid[2:5:6j, 1:3:2j] # 平均分为6个元素和2个元素,左右均闭
x, y = z[0], z[1]
print('x=', x)
print('y=', y)
# 结果:
# x= [[2. 2. ]
# [2.6 2.6]
# [3.2 3.2]
# [3.8 3.8]
# [4.4 4.4]
# [5. 5. ]]
# y= [[1. 3.]
# [1. 3.]
# [1. 3.]
# [1. 3.]
# [1. 3.]
# [1. 3.]]
z = np.mgrid[2:5:0.5, 1:3:2]
x, y = z[0], z[1]
print('x=', x)
print('y=', y)
# 结果:
# x= [[2. ]
# [2.5]
# [3. ]
# [3.5]
# [4. ]
# [4.5]]
# y= [[1.]
# [1.]
# [1.]
# [1.]
# [1.]
# [1.]]
### 将数据网格化
# x, y = np.meshgrid(u, v) 生成空间网格线,返回两个矩阵,利用到笛卡尔乘积;uv为一维数组
# 返回的两个矩阵xy,行数由u控制,列数由v控制
# x列元素相同,y行元素相同
u = np.linspace(-3, 2, 5)
v = np.linspace(4, 8, 7)
x, y = np.meshgrid(u, v)
print('x=', x)
print('y=', y)
# 结果:
# x= [[-3. -1.75 -0.5 0.75 2. ]
# [-3. -1.75 -0.5 0.75 2. ]
# [-3. -1.75 -0.5 0.75 2. ]
# [-3. -1.75 -0.5 0.75 2. ]
# [-3. -1.75 -0.5 0.75 2. ]
# [-3. -1.75 -0.5 0.75 2. ]
# [-3. -1.75 -0.5 0.75 2. ]]
# y= [[4. 4. 4. 4. 4. ]
# [4.66666667 4.66666667 4.66666667 4.66666667 4.66666667]
# [5.33333333 5.33333333 5.33333333 5.33333333 5.33333333]
# [6. 6. 6. 6. 6. ]
# [6.66666667 6.66666667 6.66666667 6.66666667 6.66666667]
# [7.33333333 7.33333333 7.33333333 7.33333333 7.33333333]
# [8. 8. 8. 8. 8. ]]
x, y = np.ogrid[3:10:6j, 2:7:4j] # x列向量,y行向量
print(x, np.shape(x))
print(y, np.shape(y))
# 结果:
# [[ 3. ]
# [ 4.4]
# [ 5.8]
# [ 7.2]
# [ 8.6]
# [10. ]] (6, 1)
# [[2. 3.66666667 5.33333333 7. ]] (1, 4)