Estoy intentando seleccionar elementos de columna específicos para cada fila de una matriz numpy. Por ejemplo, en el siguiente ejemplo:Seleccionar una columna específica en cada fila de la matriz
In [1]: a = np.random.random((3,2))
Out[1]:
array([[ 0.75670668, 0.1283942 ],
[ 0.51326555, 0.59378083],
[ 0.03219789, 0.53612603]])
me gustaría seleccionar el primer elemento de la primera fila, el segundo elemento de la segunda fila, y el primer elemento de la tercera fila. Así que traté de hacer lo siguiente:
In [2]: b = np.array([0,1,0])
In [3]: a[:,b]
Pero esto produce el siguiente resultado:
Out[3]:
array([[ 0.75670668, 0.1283942 , 0.75670668],
[ 0.51326555, 0.59378083, 0.51326555],
[ 0.03219789, 0.53612603, 0.03219789]])
que claramente no es lo que busco. ¿Hay una manera fácil de hacer lo que me gustaría hacer sin usar los bucles?
De hecho. * Slicing * conserva el eje dado tal como está, mientras que lo que quería en ambas dimensiones se llama * indexación de fantasía * en la documentación. – dwf
Derecha. Por ejemplo, 'a [0: 2,0: 2]' y 'a [[0,1], [0,1]]' devuelven cosas diferentes. –