Supongamos que tengo definido una matriz 3x3x3 numpy conNumpy matriz multidimensional rebanar
x = numpy.arange(27).reshape((3, 3, 3))
Ahora, puedo obtener una matriz que contiene el elemento (0,1) de cada submatriz 3x3 con x[:, 0, 1]
, que devuelve array([ 1, 10, 19])
. ¿Qué pasa si tengo una tupla (m, n) y quiero recuperar el elemento (m, n) de cada subcampo (0,1) almacenado en una tupla?
Por ejemplo, supongamos que tengo t = (0, 1)
. Intenté x[:, t]
, pero no tiene el comportamiento correcto: devuelve las filas 0 y 1 de cada subcampo. La solución más simple que he encontrado es
x.transpose()[tuple(reversed(t))].transpose()
pero estoy seguro de que debe haber una manera mejor. Por supuesto, en este caso, podría hacer x[:, t[0], t[1]]
, pero eso no se puede generalizar al caso en el que no sé cuántas dimensiones tienen x
y t
.
Cool, gracias por la ayuda (tú también, wim). Encontré más ejemplos para s_ y slice en [scipy] (http://www.scipy.org/Numpy_Example_List). Creo que miré esa lista antes, pero no vi nada que pareciera relevante. – James