Хранить многомерный массив массива numpy с newaxis для объекта

У меня есть код, в котором мне неоднократно нужно многократно передавать массивы сложными способами, например:

a = b[np.newaxis, ..., :, np.newaxis] * c[..., np.newaxis, np.newaxis, :] 

Есть ли объект, для которого я могу хранить эти спецификации нарезки?

  • Поиск соответствия данных из одного набора данных в другом
  • Как объявить и добавить элементы в массив в Python?
  • ValueError: установка элемента массива с последовательностью
  • Поиск расположения элементов массива в столбце кадра pandas (aka pd.series)
  • Неизменяемая матрица?
  • Python: удалить дубликаты из многомерного массива
  • т.е. (но, очевидно, это не работает):

     s1 = magic([np.newaxis, ..., :, np.newaxis]) s2 = magic([..., np.newaxis, np.newaxis, :]) 

    Редактировать: возможно, это может быть сделано с помощью numpy.broadcast_to , но неясно, как именно, убедившись, что правильные оси транслируются …

  • numpy rollaxis - как именно он работает?
  • Преобразование многоканального файла PyAudio в массив NumPy
  • matplotlib: массивы с нулевыми числами с None в качестве значений
  • Путаница между numpy, scipy, matplotlib и pylab
  • Как установить matplotlib с Python3.2
  • Получение целочисленного индекса строки Pandas DataFrame, выполняющего условие?
  • One Solution collect form web for “Хранить многомерный массив массива numpy с newaxis для объекта”

    Вы можете построить индексный кортеж вручную, но NumPy включает в себя помощник для него:

     slice_tuple = np.s_[np.newaxis, ..., :, np.newaxis] 

    Тогда b[np.newaxis, ..., :, np.newaxis] эквивалентно b[slicetuple] .


    Для справки, построение кортежа вручную было бы (np.newaxis, Ellipsis, slice(None), np.newaxis) . Кроме того, np.newaxis is None , поэтому (None, Ellipsis, slice(None), None) будет эквивалентным.


    np.s_ можно np.s_ следующим образом:

     class IndexHelper(object): def __getitem__(self, arg): return arg s_ = IndexHelper() 
    Python - лучший язык программирования в мире.