Самый быстрый способ построения матрицы с пользовательской архитектурой

Какой самый быстрый способ в numpy или pandas построить матрицу, которая имеет эту форму:

1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 

Это сохраняет как нечетную, так и даже архитектуру?

One Solution collect form web for “Самый быстрый способ построения матрицы с пользовательской архитектурой”

Использование NumPy brodacasting !

 In [289]: a = np.array([1,2,3,2,1]) In [290]: np.minimum(a[:,None],a) Out[290]: array([[1, 1, 1, 1, 1], [1, 2, 2, 2, 1], [1, 2, 3, 2, 1], [1, 2, 2, 2, 1], [1, 1, 1, 1, 1]]) 

Чтобы построить массив массивов, мы можем сделать что-то вроде этого –

 In [303]: N = 3 In [304]: np.concatenate((np.arange(1,N+1),np.arange(N-1,0,-1))) Out[304]: array([1, 2, 3, 2, 1]) 

Добавление некоторого смещения

Предположим, мы хотим переместить максимальное число / пик вверх или вниз. Нам нужно создать еще один массив смещения и использовать ту же стратегию broadcasting , например,

 In [394]: a = np.array([1,2,3,2,1]) In [395]: b = np.array([2,3,2,1,0]) # Biasing array In [396]: np.minimum(b[:,None],a) Out[396]: array([[1, 2, 2, 2, 1], [1, 2, 3, 2, 1], [1, 2, 2, 2, 1], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]]) 

Аналогично, чтобы смещение сдвигалось влево или вправо, измените a ,

 In [397]: a = np.array([2,3,2,1,0]) # Biasing array In [398]: b = np.array([1,2,3,2,1]) In [399]: np.minimum(b[:,None],a) Out[399]: array([[1, 1, 1, 1, 0], [2, 2, 2, 1, 0], [2, 3, 2, 1, 0], [2, 2, 2, 1, 0], [1, 1, 1, 1, 0]]) 
  • Поиск CSV-файлов с помощью Pandas (уникальный идентификатор) - Python
  • Устанавливает значение для конкретной ячейки в pandas DataFrame с помощью iloc
  • Изменить тип объекта в datetime64 -pandas
  • Pandas boolean Неопределенность выбора DataFrame
  • PIP Install Numpy выдает ошибку «ascii-кодек не может декодировать байт 0xe2»
  • Указание типа данных в считывателе Pandas csv
  • pandas: Запись в существующий файл excel (xlsx) с использованием to_excel
  • Эффективный расчет бета-счета Pandas Pandas на многих фреймах данных
  • Python - лучший язык программирования в мире.