mgrid
返回密集的多维”网格“实例
用法:np.mgrid[第1维, 第2维, 第3维...]
维度中的写法为a:b:c
a
,起始索引b
,结束索引c
,步长- 如果为实数,表示间隔。区间为[a, b),左闭右开。
- 如果为复数,表示个数。区间为[a, b],左闭右闭。
网格,顾名思义,就是创建对应点集,下面举例来说明这一点
创建一个一维的索引
1 |
np.mgrid[0:10] |
一维跟arange()其实是一样的,这里就不做过多的介绍了
创建一个二维的索引
1 |
np.mgrid[0:3,0:3] |
其实就是创建了点集
- (0, 0), (0, 1), (0, 2)
- (1, 0), (1, 1), (1, 2)
- (2, 0), (2, 1), (2, 2)
大概意思就是,第一维所有点映射到二维所有的点。就是所有的一维和二维能形成的全部的点
创建一个三维的索引
1 |
np.mgrid[0:2, 0:2, 0:2] |
其实就是创建了点集
(0, 0, 0), (0, 0,1)
(0, 1, 0), (0, 1,1)
(1, 0, 0), (1, 0,1)
(1, 1, 0), (1, 1,1)
一维,二维,三维能形成的所有的点
推到到N维
实质上就是创建N维所有能形成的点
需要注意的是:在所有的例子中没有使用复数的步长,但是要知道的是复数的步长代表将a,b形成的区域等分成若干份,取对应的值,跟实数的每个数相隔的距离不同。
ogrid
返回开放的多维”网格“的实例
该方法跟mgrid很类似,但不是形成所有的点,而是只形成对应的数据
一维
1 |
np.ogrid[0:10] |
与上面的一样,没啥好说的。
二维
1 |
np.ogrid[0:3, 0:3] |
一共两维,有几维就有几个array,第一个的数据在第一维度,第二个的数据在第二维度,仅仅只有自己维度有数据,推理到多维是一样的。
所以,该方法一般用来创建离散点集或者是离散多个多维数组使用。