Supponiamo ho definita una matrice 3x3x3 NumPy conNumpy array multidimensionale affettare
x = numpy.arange(27).reshape((3, 3, 3))
Ora, posso ottenere una matrice contenente il (0,1) di ciascun elemento sottomatrice 3x3 con x[:, 0, 1]
, che restituisce array([ 1, 10, 19])
. Cosa succede se ho una tupla (m, n) e voglio recuperare l'elemento (m, n) di ogni sottoarray (0,1) memorizzato in una tupla?
Ad esempio, supponiamo di avere t = (0, 1)
. Ho provato x[:, t]
, ma non ha il comportamento corretto - restituisce le righe 0 e 1 di ogni sottoarray. La soluzione più semplice che ho trovato è
x.transpose()[tuple(reversed(t))].transpose()
ma sono sicuro che ci deve essere un modo migliore. Naturalmente, in questo caso, potrei fare x[:, t[0], t[1]]
, ma questo non può essere generalizzato al caso in cui non so quante dimensioni hanno x
e t
.
Cool, grazie per l'aiuto (anche tu, wim). Ho trovato altri esempi per s_ e slice su [scipy] (http://www.scipy.org/Numpy_Example_List). Penso di averlo esaminato in precedenza, ma non ho visto nulla di rilevante. – James