Преобразование массива numpy в нижнюю треугольную матрицу

#python #numpy

Вопрос:

Я хочу преобразовать произвольный 1-d массив Numpy, назовите его a , в конкретную нижнюю треугольную матрицу, назовите ее m . Следующий пример иллюстрирует это преобразование.

Начните с 1-d массива, a

 array([ 3,  2,  9, 12])
 

и создайте следующую нижнюю треугольную матрицу, m

 array([[ 3,  0,  0,  0],
       [ 2,  3,  0,  0],
       [ 9,  2,  3,  0],
       [12,  9,  2,  3]])
 

Комментарии:

1. Существует набор np.tri... функций. Для создания такого массива можно использовать один или несколько, но, скорее всего, ему потребуется массив из 10 элементов, а не только 4. Другими словами, тот вид повторения, который вам нужен, не является автоматическим.

2. Спасибо @hpaulj. Я попробовал несколько из них, в сочетании с транспонированием и ротациями, без успеха.

Ответ №1:

Если у вас есть scipy свободные места, то есть scipy.linalg.toeplitz :

 from scipy import linalg

linalg.toeplitz([3,2,9,12],[0,0,0,0])
# array([[ 3,  0,  0,  0],
#        [ 2,  3,  0,  0],
#        [ 9,  2,  3,  0],
#        [12,  9,  2,  3]])
 

Комментарии:

1. Спасибо @loopy подожди! (Это то, что я получаю за то, что забыл свой курс эконометрики.)