Аналогично этому вопросу , скажем, у меня есть массив 3D Numpy, над которым я добавил для ясности метку комментария:
#C C C R R C C C R R C C C
a = [[[10,11,12,13,14,15,16,17,18,19,20,21,22],
[23,24,25,26,27,28,29,30,31,32,33,34,35]],
[[36,37,38,39,40,41,42,43,44,45,46,47,48],
[48,49,50,51,52,53,54,55,56,57,58,59,60]],
[[61,62,63,64,65,66,67,68,69,70,71,72,73],
[74,75,76,77,78,79,80,81,82,83,84,85,86]]]
можно ли удалить столбцы помечены R
в одной строке кода? Поэтому удалите два столбца каждый пятый элемент, начиная с индекса 3. В этом случае результирующий массив будет выглядеть следующим образом:
#C C C C C C C C C
a = [[[10,11,12,15,16,17,20,21,22],
[23,24,25,28,29,30,33,34,35]],
[[36,37,38,41,42,43,46,47,48],
[48,49,50,53,54,55,58,59,60]],
[[61,62,63,66,67,68,71,72,73],
[74,75,76,79,80,81,84,85,86]]]
Я хотел бы сделать код более обобщенным c, чтобы он мог обрабатывать удаление пар столбцов в трехмерных массивах разных размеров и местоположений. В этом примере я могу удалить один столбец за раз, используя это:
start = 3
step = 5
a = numpy.delete(big, numpy.s_[start:numpy.size(big, 2):step], 2)
a = numpy.delete(a, numpy.s_[start:numpy.size(a, 2):step - 1], 2)
Но есть ли способ указать диапазон столбцов для удаления и выполнить задачу в одной строке кода?