seleccionando un rango de columnas en Python

Tengo un conjunto de datos que consta de las columnas 0 a 10, y quiero extraer la información que está solo en las columnas 1 a 5, no 6, y 7 a 9 (significa que no es la última). Hasta ahora, he hecho lo siguiente:

A=B[:,[[1:5],[7:-1]]] 

pero tengo un error de syntax, ¿cómo puedo obtener esos datos?

Gracias

La indexación avanzada no toma una lista de listas de sectores. En su lugar, puede utilizar numpy.r_ . Esta función no toma índices negativos, pero puede sortear esto usando np.ndarray.shape :

 A = B[:, np.r_[1:6, 7:B.shape[1]-1]] 

Recuerde agregar 1 a la segunda parte, ya que a: b no incluye b , de la misma manera que la slice(a, b) no incluye b . También tenga en cuenta que la indexación comienza en 0.

Aquí hay una demostración:

 import numpy as np B = np.random.randint(0, 10, (3, 11)) print(B) [[5 8 8 8 3 0 7 2 1 6 7] [4 3 8 7 3 7 5 6 0 5 7] [1 0 4 0 2 2 5 1 4 2 3]] A = B[:,np.r_[1:6, 7:B.shape[1]-1]] print(A) [[8 8 8 3 0 2 1 6] [3 8 7 3 7 6 0 5] [0 4 0 2 2 1 4 2]] 

Otra forma sería obtener sus rebanadas de forma independiente y luego concatenar:

 A = np.concatenate([B[:, 1:6], B[:, 7:-1]], axis=1) 

Usando datos de ejemplo similares como @jpp:

 B = np.random.randint(0, 10, (3, 10)) >>> B array([[0, 5, 0, 6, 8, 5, 9, 3, 2, 0], [8, 8, 1, 7, 3, 5, 7, 7, 4, 8], [5, 5, 5, 2, 3, 1, 6, 4, 9, 6]]) A = np.concatenate([B[:, 1:6], B[:, 7:-1]], axis=1) >>> A array([[5, 0, 6, 8, 5, 3, 2], [8, 1, 7, 3, 5, 7, 4], [5, 5, 2, 3, 1, 4, 9]]) 

¿qué hay de la unión de la gama?

 B[:, np.union1d(range(1,6), range(7,10))]