2015-03-01 8 views
0

в октавных или Matlab есть аккуратный, компактный способ для создания больших матриц Теплица, например:матрица Теплица с использованием NumPy/SciPy

T = toeplitz([1,-0.25,zeros(1,20)]) 

Это экономит много времени, которые иначе были бы затрачиваемое для заполнения матрицу с десятками или сотнями нулей, используя дополнительные строки кода.

Однако, похоже, я не могу сделать то же самое ни с scipy, ни с помощью numpy, хотя эти две библиотеки имеют функции toeplitz() и zeros(). Есть ли аналогичный способ сделать это или я должен собрать собственную рутину, чтобы сделать это (не огромная проблема, но все же неприятность)?

Спасибо,

F.

ответ

1

В настоящее время я думаю, что лучшее, что вы можете сделать, это:

from numpy import concatenate, zeros 
from scipy.linalg import toeplitz 

toeplitz(concatenate([[1., -.25], zeros(20)])) 

Как питона 3.5, однако мы будем иметь:

toeplitz([1., -.25, *zeros(20)]) 

Так что с нетерпением ждем.

+0

Спасибо за подсказку, которая отлично работала! Я забыл упомянуть, что я еще не использую Python 3.x. Я также допустил ошибку: насколько я знаю, numpy не имеет toeplitz(). Это часть скудного. –

Смежные вопросы