Построение матрицы «свернутых» строк эффективно в Numpy

Я хотел бы построить (n,n) -матрица из одномерного массива, где каждая строка сдвигается (с оберткой) на одну по отношению к предыдущей. Следующий код делает следующее:

 import numpy as np r = np.array([1, 2, 3, 4, 5]) n = len(r) MM = np.zeros((n, n), dtype=r.dtype) for k in range(n): MM[k, :] = np.roll(r, k) print(MM) 

что приводит к:

 [[1 2 3 4 5] [5 1 2 3 4] [4 5 1 2 3] [3 4 5 1 2] [2 3 4 5 1]] 

Есть ли способ сделать это Numpy быстрее, т. Е. Избегать for -loop, для больших r в Numpy?

One Solution collect form web for “Построение матрицы «свернутых» строк эффективно в Numpy”

Взгляните на scipy.linalg.circulant

 In [255]: r Out[255]: array([1, 2, 3, 4, 5]) In [256]: circulant(r).T Out[256]: array([[1, 2, 3, 4, 5], [5, 1, 2, 3, 4], [4, 5, 1, 2, 3], [3, 4, 5, 1, 2], [2, 3, 4, 5, 1]]) 

или scipy.linalg.toeplitz

 In [257]: toeplitz(np.roll(r[::-1], 1), r) Out[257]: array([[1, 2, 3, 4, 5], [5, 1, 2, 3, 4], [4, 5, 1, 2, 3], [3, 4, 5, 1, 2], [2, 3, 4, 5, 1]]) 
  • Пакет статистики Python: разница между statsmodel и scipy.stats
  • Ускорение вложенных циклов с усилением элементов
  • Python MemoryError в Scipy Radial Basis Function (scipy.interpolate.rbf)
  • Быстрая линейная интерполяция в Numpy / Scipy «вдоль пути»
  • проблема с иерархической кластеризацией в Python
  • Python / Scipy: найдите «ограниченный» min / max матрицы
  • Python: решение нескольких линейных систем с использованием потоков
  • Процедуры с двойной или плавающей настройкой
  •  
    Interesting Posts for Van-Lav

    пересечение интервала дат питона

    Python: как перебирать список списка, итерации по каждому элементу в каждом вложенном списке

    Как активировать / деактивировать virtualenv из кода python?

    Почему __dict__ экземпляров настолько мал в Python 3?

    Пример "use \ G в негативных переменных длины lookbehinds, чтобы ограничить, как далеко назад lookbehind идет"

    Как использовать шаблоны Django без остальной части Django?

    PyQt – Автоматическое обновление пользовательского представления при обновлении модели?

    Как импортировать классы, определенные в __init__.py

    Как работает «python»?

    TypeError: __init __ () принимает не менее 2 аргументов (1 заданную) ошибку

    Как определить, является ли файл потомком данного каталога?

    Как сделать DevServer Django общедоступным? Возможно ли это вообще?

    Блокнот ipython упорядочивает графики по горизонтали

    Джанго с осколком и фантомами болезненно медленно

    автономное использование DAL в web2py

    Python - лучший язык программирования в мире.