Python-椭圆对象有什么作用?
在闲置地浏览命名空间时,我注意到一个名为的奇怪对象Ellipsis
,它看起来并不特殊,也没有做任何特别的事情,但这是一个全局可用的内置对象。
经过搜索后,我发现Numpy
和Scipy
在切片语法的某些晦涩变体中使用了它,但是几乎没有其他东西。
是否将此对象添加到专门支持Numpy + Scipy
的语言中?Ellipsis
是否有任何一般意义或用途?
D:\workspace\numpy>pythonPython 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> Ellipsis
Ellipsis
回答:
这是最近另一个问题。我将从那里详细说明我的答案:
省略号是可以以切片表示法显示的对象。例如:
myList[1:2, ..., 0]
它的解释完全取决于实现该__getitem__
函数并在其中看到Ellipsis
对象的任何事物,但是其主要(和预期的)用途是在数字python扩展名中,该扩展名添加了多维数组类型。由于存在多个维度,因此切片变得比仅起始索引和终止索引更为复杂;能够在多个维度上切片也很有用。例如,给定4x4数组,则左上角的区域将由slice定义[:2,:2]
:
>>> aarray([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> a[:2,:2] # top left
array([[1, 2],
[5, 6]])
进一步扩展,此处省略号用于表示未指定的其余数组尺寸的占位符。可以认为它表示所[:]放置间隙中所有维度的完整切片,因此对于3d数组,与4d a[…,0]相同,同样是(但中间有许多冒号组成了完整数数组中的尺寸)。a[:,:,0]a[:,:,:,0]a[0,...,0]a[0,:,:,0]
有趣的是,在python3中,省略号文字(...)
在slice
语法之外可用,因此你实际上可以编写:
>>> ...Ellipsis
除了各种数字类型,不,我认为它没有被使用。据我所知,它是纯粹为numpy使用而添加的,除了提供对象和相应的语法外,没有其他核心支持。那里的对象不需要这个,但是对切片的字面量“ …”支持确实需要。
以上是 Python-椭圆对象有什么作用? 的全部内容, 来源链接: utcz.com/qa/407535.html