2010-10-22 19 views
6

E come si chiama? Non so come cercarlo; Ho provato a chiamarlo ellissi con Google. Non intendo in output interattivo in cui i punti sono usati per indicare che l'array completo non viene mostrato, ma come nel codice che sto guardando,Cosa significa ... in codice numpy?

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

Dalla mia sperimentazione, sembra funzionano allo stesso modo di : nell'indicizzazione, ma si riferiscono a più :, rendendo x[:,:,1] equivalente a x[...,1].

+3

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

+0

ottimo, non è stato in grado di cercarlo. – Thomas

+1

Ha, ma è chiamato "ellissi", quindi avrei dovuto essere in grado di farlo. Ho rinunciato presto quando "python numpy ..." non ha funzionato. Grazie sdolan. – Thomas

risposta

7

Sì, hai ragione. Riempie il numero di : come richiesto. L'unica differenza si verifica quando si utilizzano più ellissi. In tal caso, i primi puntini di sospensione si comportano allo stesso modo, ma ogni rimanente viene convertito in un singolo :.

3

Sebbene questa funzionalità esiste principalmente per supportare NumPy e altri, moduli simili, è una caratteristica fondamentale della lingua e può essere utilizzato ovunque, in questo modo:

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

o anche:

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