np.ogrid & np.mgrid 用法

2020-08-26  本文已影响0人  水之心

np.ogridnumpy.lib.index_tricks.nd_grid 的实例。如果步长是复数(例如 5j),则其大小的整数部分被解释为指定了在起始值和终止值之间创建的点数,其中停止值包含在内。

  1. 步长不是纯虚数,索引是左闭右开的:
np.ogrid[0:10:2] # 步长默认为1

输出:

array([0, 2, 4, 6, 8])
  1. 步长是纯虚数,是闭合的索引:
np.ogrid[0:10:2j]

输出:

array([ 0., 10.])

对于一维数组 np.ogridnp.mgrid 的返回值是一样的。而二维数组则不同,先看 np.ogrid

Y, X = np.ogrid[0:2, 0:3]

print(X.shape)
print(Y.shape)
X, Y

输出:

(1, 3)
(2, 1)
Out[64]:
(array([[0, 1, 2]]),
 array([[0],
        [1]]))

为了更直观,可以将其可视化:

def plot_grid(X, Y):
    from matplotlib import pyplot as plt
    plt.imshow(X)
    plt.show()
    plt.imshow(Y)
    plt.show()

效果:

再看看 np.mgrid

Y, X = np.mgrid[0:2, 0:3]

print(X.shape)
print(Y.shape)
X, Y

输出:

(2, 3)
(2, 3)

(array([[0, 1, 2],
        [0, 1, 2]]),
 array([[0, 0, 0],
        [1, 1, 1]]))

可视化:

更高维度的数组可自行研究,其基本原理是一致的。

上一篇下一篇

猜你喜欢

热点阅读