np.ogrid 用法
np.ogrid 用法
np.ogrid 与 np.mgrid 方法相似,都是返回一个多维 meshgrid ,区别是前者返回开放式,后者返回密集式数组,数组中元素依据 np.arrange() 方法来生成, mgrid 与 ogrid 联系与区别
联系:
参数部分需传入一个列表,列表中若只存在一个元素 ,格式形如[a : b : step] (a表示起点,b 表示终点,step 表示步长,步长参数没有的时候默认为1),*终只生成一个数组;若列表中包含两个元[a : b : step,a1 : b1 : step1],*终生成两个数组;
区别
若列表中有两个元素时, np.mgrid *终返回两个ndarray,维度全部是 n*m ;生成的*个数组是依照列表中*个元素生成,对列进行扩展重复;另外一个数组是根据列表中第二个元素生成,对行进行扩展重复;
np.ogrid 也返回两个 ndarray ,只不过数组维度分别为 n *1 和 1 * m
>>> np.mgrid[1:20:5,0:8:1]
array([[[ 1, 1, 1, 1, 1, 1, 1, 1],
[ 6, 6, 6, 6, 6, 6, 6, 6],
[11, 11, 11, 11, 11, 11, 11, 11],
[16, 16, 16, 16, 16, 16, 16, 16]],
[[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 0, 1, 2, 3, 4, 5, 6, 7]]])
>>> np.ogrid[1:20:5,0:8:1]
[array([[ 1],
[ 6],
[11],
[16]]), array([[0, 1, 2, 3, 4, 5, 6, 7]])]
以上是当步长为整数部分,当步长为 复数时,生成元素会以复数整数部分 n ,将元素终点到起点整数范围划分为 n 等份(生成元素中包含终点元素)
>>> ogrid[-1:1:5j]
array([-1. , -0.5, 0. , 0.5, 1. ])