gpt4 book ai didi

python - 从技术上讲,numpy.mgrid 是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:58:19 28 4
gpt4 key购买 nike

我使用 numpy.mgrid 有一段时间了,我很熟悉它的作用。但从那以后,我一直想知道它到底是什么……

mgrid 的典型用例和语法是

xx, yy = mgrid[0:5, 0:3]

令我困扰的是语法 mgrid[...],这让我相信 mgrid 不是函数或方法。 docs假设 mgrid 是一个

nd_grid instance which returns a dense multi-dimensional “meshgrid”.

它在后台做什么?为什么它像函数一样使用,但语法不同于函数(我希望像 mgrid((0,5), (0,3)))。我真的迷失了理解什么是 mgrid

欢迎任何见解!

最佳答案

numpy.mgridMGridClass 的一个对象numpy/index_tricks.py 中。如您所知,此对象允许您构建多维网格。

MGridClass 扩展了 nd_grid class , 它实现了一个 __getitem__方法。方括号实际上委托(delegate)了对 nd_grid.__getitem__ 的调用,它实现了根据传递的切片构建 meshgrid 的核心逻辑。

可在此处找到 nd_grid 工作的简要 MCVE。

class dummy_1d_grid:
def __getitem__(self, val):
print(val)
return np.arange(val.start, val.stop, val.step, )

mgrid_1d = dummy_1d_grid()
mgrid_1d[:5]

slice(0, 5, None)
# array([0, 1, 2, 3, 4])

np.mgrid[0:5]
# array([0, 1, 2, 3, 4])

当然,这都是一个实现细节,因此布局和类都可能发生变化。需要关注的一点是,它是实现__getitem__ 方法的类的一个实例。因此它被切片,而不是被调用。

关于python - 从技术上讲,numpy.mgrid 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54270855/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com