В общем есть последовательность с цифрами. Надо собрать из нее матрицу так, чтобы в ее диагоналях были значения == соответствующему элементу списка/на кол-во элементов в диагонали. Проще показать, чем объяснить:
Есть последовательность и пусть матрица должна быть 4x3, тогда получаем:Я допер только до такого варианта:
[
]
"""
raws_num, coll_num -- количество строк и столбцов в матрице, соответственно.
diag_sums -- выше озвученная последовательность.
diag_num -- количество элементов в каждой из диагоналей.
"""
from numpy import array, vstack
diag_list = []
for i in xrange(min(raws_num, coll_num)):
diag_list.append([diag_sums[j] / diag_num[j]
for j in xrange(0 + i, max(raws_num, coll_num) + i)])
if raws_num < coll_num:
diag_list.reverse()
matrix_of_diag = array(diag_list)
else:
[diag_list[i].reverse() for i in xrange(len(diag_list))]
matrix_of_diag = vstack(diag_list).transpose()
Может кто нибудь другой вариант подскажет?