#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 подожди! (Это то, что я получаю за то, что забыл свой курс эконометрики.)