Векторизация для рутины с использованием numpy.roll - PullRequest
0 голосов
/ 16 января 2019

Как я могу векторизовать следующий код?

tlngth=20
sp_array = np.zeros((tlngth,tlngth))
sp = np.arange(0,tlngth)

for i in range(tlngth):
    sp_array[i] = np.roll(sp,i)

1 Ответ

0 голосов
/ 16 января 2019

По сути, вы пытаетесь построить матрицу Теплица. Для этого есть функция:

import scipy.linalg
tlngth = 5
sp_array = scipy.linalg.toeplitz(np.roll(np.arange(tlngth - 1, -1, -1), 1),
                                 np.arange(tlngth))
#array([[0, 1, 2, 3, 4],
#       [4, 0, 1, 2, 3],
#       [3, 4, 0, 1, 2],
#       [2, 3, 4, 0, 1],
#       [1, 2, 3, 4, 0]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...