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

Какой самый быстрый способ в 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]]) 
  • Неоднозначность в представлении «ось» в Pandas Dataframe / Numpy Array
  • Получить индексы, удовлетворяющие некоторым критериям
  • Pandas Statsmodels ols прогнозирование регрессии с использованием предсказателя DF?
  • Ошибка: объект float не имеет атрибута notnull
  • Как прочитать список паркетных файлов из S3 в качестве блока данных pandas с использованием pyarrow?
  • Эффективно проверяет, является ли произвольный объект NaN в Python / numpy / pandas?
  • Python pandas dataframe slicing, если условие
  • Как эффективно пробовать комбинации строк в pandas DataFrame
  • Преобразование N по N Dataframe в 3 кадра данных столбца
  • Типы объектов Pandas Dataframe исключение fillna для разных типов данных
  • Объединение 2 наборов данных csv с Python общим столбцом идентификатора - один csv имеет несколько записей для уникального идентификатора
  • Python - лучший язык программирования в мире.