这是在Hidden features of Python中出现的,但是我看不到解释该特性如何工作的好的文档或示例。
webghufk1#
省略号在numpy中用于对更高维的数据结构进行切片。它的设计意思是 * 在这一点上,插入尽可能多的完整切片(:),以将多维切片扩展到所有维度 *。
:
示例:
>>> from numpy import arange >>> a = arange(16).reshape(2,2,2,2)
现在,您有了一个2x2x2x2阶的4维矩阵。要选择第4维中的所有第一个元素,可以使用省略号表示法
>>> a[..., 0].flatten() array([ 0, 2, 4, 6, 8, 10, 12, 14])
相当于
>>> a[:,:,:,0].flatten() array([ 0, 2, 4, 6, 8, 10, 12, 14])
在您自己的实现中,您可以随意忽略上面提到的契约,并将其用于您认为合适的任何用途。
u7up0aaq2#
Ellipsis,或者...不是一个隐藏的特性,它只是一个常量。它和javascript ES6完全不同,在那里它是语言语法的一部分。没有内置类或者Python语言构造使用它。因此,它的语法完全取决于您或其他人是否编写了代码来理解它。Numpy使用它,如文档中所述。这里有一些例子。在您自己的类中,您可以这样使用它:
Ellipsis
...
>>> class TestEllipsis(object): ... def __getitem__(self, item): ... if item is Ellipsis: ... return "Returning all items" ... else: ... return "return %r items" % item ... >>> x = TestEllipsis() >>> print x[2] return 2 items >>> print x[...] Returning all items
当然,还有python文档和语言参考,但这些都不是很有帮助。
vsnjm48y3#
这是Ellipsis的另一种用法,它与切片无关:我经常在与队列的线程内通信中使用它,作为表示“完成”的标记;它就在那里,它是一个对象,它是一个单例,它的名字意味着“缺少”,它不是被过度使用的None(它可以作为正常数据流的一部分放在队列中)。
0yg35tkg4#
如其他答案所述,它可用于创建切片。当您不想写入许多完整切片符号(:)时,或者当您不确定所操作数组的维数时,它非常有用。我认为需要强调的是,即使没有更多的维度需要填充,它也可以被使用,而这在其他答案中是缺失的。示例:
>>> from numpy import arange >>> a = arange(4).reshape(2,2)
这将导致错误:
>>> a[:,0,:] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: too many indices for array
这将起作用:
a[...,0,:] array([0, 1])
4条答案
按热度按时间webghufk1#
省略号在numpy中用于对更高维的数据结构进行切片。
它的设计意思是 * 在这一点上,插入尽可能多的完整切片(
:
),以将多维切片扩展到所有维度 *。示例:
现在,您有了一个2x2x2x2阶的4维矩阵。要选择第4维中的所有第一个元素,可以使用省略号表示法
相当于
在您自己的实现中,您可以随意忽略上面提到的契约,并将其用于您认为合适的任何用途。
u7up0aaq2#
Ellipsis
,或者...
不是一个隐藏的特性,它只是一个常量。它和javascript ES6完全不同,在那里它是语言语法的一部分。没有内置类或者Python语言构造使用它。因此,它的语法完全取决于您或其他人是否编写了代码来理解它。
Numpy使用它,如文档中所述。这里有一些例子。
在您自己的类中,您可以这样使用它:
当然,还有python文档和语言参考,但这些都不是很有帮助。
vsnjm48y3#
这是Ellipsis的另一种用法,它与切片无关:我经常在与队列的线程内通信中使用它,作为表示“完成”的标记;它就在那里,它是一个对象,它是一个单例,它的名字意味着“缺少”,它不是被过度使用的None(它可以作为正常数据流的一部分放在队列中)。
0yg35tkg4#
如其他答案所述,它可用于创建切片。当您不想写入许多完整切片符号(
:
)时,或者当您不确定所操作数组的维数时,它非常有用。我认为需要强调的是,即使没有更多的维度需要填充,它也可以被使用,而这在其他答案中是缺失的。
示例:
这将导致错误:
这将起作用: