Numpy IndexError: demasiados índices para la matriz cuando se indexa una matriz con otra

Tengo una matriz que creo así:

>>> a = np.matrix("1 2 3; 4 5 6; 7 8 9; 10 11 12") 

Tengo una matriz de tags que creo así:

 >>> labels = np.matrix("1;0;1;1") 

Así es como se ven las dos matrices:

 >>> a matrix([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]]) >>> labels matrix([[1], [0], [1], [1]]) 

Como puedes ver, cuando selecciono todas las columnas, no hay problema

 >>> a[labels == 1, :] matrix([[ 1, 7, 10]]) 

Pero cuando bash especificar una columna me sale un error

 >>> a[labels == 1, 1] Traceback (most recent call last): File "", line 1, in  File "/usr/local/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: too many indices for array >>> 

Alguien sabe por qué es esto? Soy consciente de que ya hay preguntas similares a esto, pero ninguna de ellas explica mi problema lo suficientemente bien, ni las respuestas me son útiles.

Como las labels son una matriz, cuando haces labels==1 obtienes una matriz booleana de la misma forma. Luego, haciendo a[labels==1, :] le devolverá solo la primera columna con las líneas correspondientes a la coincidencia. Tenga en cuenta que su intención de conseguir:

 matrix([[ 1, 2, 3], [ 7, 8, 9], [10, 11, 12]]) 

no se logró (solo se obtuvo la primera columna), aunque funcionó para NumPy <1.8 (como lo señaló @seberg).

Para obtener lo que desea, puede utilizar una vista plana de las labels :

 a[labels.view(np.ndarray).ravel()==1, :]