indexação numérica de array numpy em mais de uma dimensão
Tenho certeza de que estou perdendo algo com a indexação de números inteiros e poderia usar alguma ajuda. Digamos que eu crie uma matriz 2D:
>>> import numpy as np
>>> x=np.array(range(24)).reshape((4,6))
>>> x
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
Posso selecionar as linhas 1 e 2 com:
>>> x[[1,2],:]
array([[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17]])
Ou a coluna 1 das linhas 2 e 3 com:
>>> x[[1,2],1]
array([ 7, 13])
Portanto, faria sentido para mim poder selecionar as colunas 3, 4 e 5 das linhas 1 e 2 com isso:
>>> x[[1,2],[3,4,5]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
E, em vez disso, preciso fazer isso em duas etapas:
>>> a=x[[1,2],:]
>>> a
array([[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17]])
>>> a[:,[3,4,5]]
array([[ 9, 10, 11],
[15, 16, 17]])
Vindo de R, minhas expectativas parecem estar erradas. Você pode confirmar que isso realmente não é possível em uma etapa ou sugerir uma alternativa melhor? Obrigado!
EDIT: observe que minha escolha de linhas e colunas no exemplo é consecutiva, mas elas não precisam ser. Em outras palavras, a indexação de fatia não serve para o meu caso.