python - 从技术上讲,什么是 numpy.mgrid?
问题描述
我已经使用numpy.mgrid
了一段时间,我熟悉它的作用。但从那以后,我一直想知道它到底是什么……
一个典型的用例和语法mgrid
是
xx, yy = mgrid[0:5, 0:3]
困扰我的是语法mgrid[...]
,这让我相信它mgrid
不是函数或方法。文档说这是mgrid
一个
nd_grid 实例,它返回一个密集的多维“网格”。
它在后台做什么?以及为什么它像函数一样使用,但语法与函数不同(我希望类似mgrid((0,5), (0,3))
)。我真的迷失在试图理解什么mgrid
是。
欢迎任何见解!
解决方案
numpy.mgrid
是in的一个对象。如您所知,此对象允许您构建多维网格网格。MGridClass
numpy/index_tricks.py
MGridClass
扩展nd_grid
类,它实现了一个__getitem__
方法。方括号实际上代表了对 的调用nd_grid.__getitem__
,它实现了基于传递的切片构造网格网格的核心逻辑。
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__
方法的类的实例。因此它被切片,而不是被调用。
推荐阅读
- javascript - 直接到 .pdf 文件中的页面而不打开新选项卡
- apache-tomee - TomEE Plume 7.0.4 未部署不属于 org.superbiz 包的 REST 注释类
- python - 当遍历一个非常大的列表并每次迭代写入文件时,文件应该在循环中打开还是在循环外打开?
- java - 网站和安卓应用程序如何连接?
- filter - 找到给定故事下的所有缺陷和子任务?
- video - 令人困惑的问题 - FFmpeg 片段过滤器使视频不同步
- c# - 在 TableLayoutPanel 中交换控件位置
- python - Python - 是否可以在另一个实例方法中定义一个实例方法?
- android - 无法解决:com.google.android.gms:play-services-maps:15.6.1 安装存储库并同步项目在文件中显示在项目结构对话框中显示
- php - 将爬虫重定向到 NGINX 中的内部微服务