2010-10-22 19 views
6

¿Y cómo se llama? No sé cómo buscarlo; Intenté llamarlo elipsis con Google. No me refiero a la producción interactiva cuando se utilizan puntos para indicar que no se muestra toda la gama, pero como en el código que estoy mirando,¿Qué significa ... en código numpy?

xTensor0[...] = xVTensor[..., 0]

Desde mi experimentación, que parece Funciona de manera similar a : en la indexación, pero se encuentra en múltiples :, haciendo x[:,:,1] equivalente a x[...,1].

+3

Consulte http://stackoverflow.com/questions/772124/what-does-the-python-ellipsis-object-do y http://stackoverflow.com/questions/118370/how-do-you-use-the- ellipsis-slicing-syntax-in-python – sdolan

+0

genial, no fue capaz de buscarlo. – Thomas

+1

Ha, pero se llama "puntos suspensivos", así que debería haber sido capaz de hacerlo. Me rendí temprano cuando "python numpy ..." no funcionó. Gracias sdolan. – Thomas

Respuesta

7

Sí, tienes razón. Rellena tantos como : según sea necesario. La única diferencia ocurre cuando usa múltiples elipses. En ese caso, los primeros puntos suspensivos actúan de la misma manera, pero cada uno restante se convierte en un solo :.

3

Aunque esta característica existe principalmente para apoyar numpy y otros módulos, de forma similar, que es una característica fundamental de la lengua y se puede utilizar en cualquier lugar, así:

>>> class foo: 
... def __getitem__(self, key): 
...  return key 
... 
>>> aFoo = foo() 
>>> aFoo[..., 1] 
(Ellipsis, 1) 
>>> 

o incluso:

>>> derp = {} 
>>> derp[..., 1] = "herp" 
>>> derp 
{(Ellipsis, 1): 'herp'}