Решение r_
, которое предлагает @Divakar
, является кратким для numpy
, но оно не будет распространяться на другие классы.
In [195]: np.r_[0:2,4:6]
Out[195]: array([0, 1, 4, 5])
Оно генерирует список нужных вам индексов сохранить, по существу, concatenate
из np.arange(0,2)
и np.arange(4,6)
. Индексирование со списком - advanced indexing
, что делает копию.
Вы не можете использовать такой список для индексирования Python list
или string
. Они могут только индексировать элементы. Чтобы использовать его в списке:
[alist[i] for i in np.r_[0:2,4:6]]
Но списки имеют синтаксис удаления alist[2:4]=[]
Строки не имеют этого, потому что они неизменны.
Более универсальный подход заключается в объединении / объединении двух фрагментов
np.concatenate([arr[0:2], arr[4:6]])
alist[0:2] + alist[4:6]
astr[0:2] + astr[4:6]
np.concatenate([arr[:, 0:2], arr[:, 4:6]], axis=1)
Ваш код hstack/vstack
можно свернуть в один с помощью
np.concatenate((A[0:start],A[stop:]),axis=0)
, поскольку вы объединяете фрагменты в первом измерении в обоих случаях .
Дополнение 2d-среза:
arr[2:4, 2:4]
не может быть 2d-массивом. В каждом ряду осталось разное количество элементов.