Numpy np.mgrid() np.meshgrid() np.ogrid()函数 | Python

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)

Numpy np.mgrid() np.meshgrid() np.ogrid()函数 | Python_第1张图片
np.meshgrid()的理解

你可能感兴趣的:(#,代码/源码,Numpy)