En Numpy (y Python en general, supongo), ¿cómo se almacena un índice de división, como (..., 0, :), para pasarlo y aplicarlo a varias matrices? Sería bueno, digamos, poder pasar un índice de división hacia y desde las funciones.Numpy: arr [..., 0 ,:] funciona. Pero, ¿cómo puedo almacenar los datos contenidos en el comando slice (..., 0, :)?
Respuesta
Python crea objetos especiales a partir de la sintaxis del sector, pero solo dentro de los corchetes para la indexación. Puede crear esos objetos con la mano (en este caso, (...,0,:)
es (Ellipsis, 0, slice(None, None, None))
, o puede crear un pequeño objeto de ayuda:
class ExtendedSliceMaker(object):
def __getitem__(self, idx):
return idx
>>> ExtendedSliceMaker()[...,0,:]
(Ellipsis, 0, slice(None, None, None))
El equivalente a (...,0,:)
debe ser ...
>>> myslice = (..., 0, slice(None, None))
>>> myslice
(Ellipsis, 0, slice(None, None, None))
No, no es 'rebanada (0)'; el '0' es solo un índice. –
@Thomas: Sí, me corrigió a mí mismo. – JAB
creo que sólo quiere hacer myslice = rebanada (1,2) para definir, por ejemplo, una rebanada que devolverá el segundo elemento (es decir myarray [myslice] == myarray [1: 2])
Lo bueno de Python es que en realidad se puede hacer una clase para inspeccionar cómo estos las cosas están representadas. Python usa el método mágico __getitem__
para manejar operaciones de indexación, así que crearemos una clase que sobrecargue esto para mostrarnos lo que pasó, crear una instancia de la clase e "indexar" a la instancia:
class foo:
def __getitem__(self, index): print index
foo()[...,0,:]
Y nuestro resultado es:
(Ellipsis, 0, slice(None, None, None))
Ellipsis
y slice
son órdenes internas, y podemos leer su documentación:
help(Ellipsis)
help(slice)
Uso s_ en NumPy:
In [1]: np.s_[...,0,:]
Out[1]: (Ellipsis, 0, slice(None, None, None))
- 1. ¿Cómo puedo reemplazar {0} pero no {{0}}?
- 2. 0 + 0 + 0 ... + 0! = 0
- 3. ¿cómo funciona {} mientras (0) funciona en macro?
- 4. : gt (0) vs: not (: first) vs .slice (1)
- 5. Haskell: ¿Cómo poner "\\ 0" en "\ 0"?
- 6. (objeto) == 0 (objeto) 0
- 7. ¿Por qué `null> = 0 && null <= 0` pero no` null == 0`?
- 8. sobre android Drawable getBounds return Rect (0, 0 - 0, 0)
- 9. `java (0% 2! = 0) == false`
- 10. ¿Qué es decltype (0 + 0)?
- 11. ¿Los archivos de 0 bytes son realmente 0 bytes?
- 12. Matrices con 0 elementos
- 13. ¿Qué margen: 5px 0; y margen: 5px 0 0; ¿media?
- 14. list.item (0) Lista vs [0]
- 15. Diferencia entre array.GetLength (0) y array.GetUpperBound (0)
- 16. Python/Numpy - Wrap Slice Around End of Array
- 17. NSInternalInconsistencyException ', razón:' intento insertar la fila 0 en la sección 0, pero solo hay 0 filas en la sección 0 después de la actualización '
- 18. ¿Por qué es (Infinity | 0) === 0?
- 19. window.innerWidth = 0?
- 20. Hace margin-left: 2px; render más rápido que el margen: 0 0 0 2px ;?
- 21. php timeout - set_time_limit (0); - no funciona
- 22. 0 como el estado
- 23. si @@ Trancount> 0 no funciona
- 24. ¿Puedo seleccionar 0 columnas en SQL Server?
- 25. CSS * {margen: 0; relleno: 0;} sobrescribir
- 26. ABAddressBookRegisterExternalChangeCallback funciona, pero los datos es rancio
- 27. Cómo convertir null en 0
- 28. Imprimiendo los 0's principales en C?
- 29. Diferencia entre Array.length = 0 y Array = []?
- 30. java.lang.ArrayIndexOutOfBoundsException: 0> = 0 intentando llenar JTable
Esto resuelve directamente el problema, suponiendo que en realidad no le importa la representación o lo que significa porque solo va a pasarla por alto para usarla en Numpy. Pensé básicamente lo mismo, pero le enseñé cómo cavar y descubrir qué es todo :) –