2013-11-18 4 views
12

Я искал встроенный метод преобразования линейного массива в треугольную матрицу. Поскольку я не смог найти его, я прошу помощи в его реализации.Numpy: преобразование массива в треугольную матрицу

Представьте себе массив как:

In [203]: dm 
Out[203]: array([ 0.80487805, 0.90243902, 0.85365854, ..., 0.95121951, 
        0.90243902, 1.  ]) 

In [204]: dm.shape 
Out[204]: (2211,) 

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

In [205]: reshapedDm = dm.trian_reshape(67, 67) 

Как бы реализовать trian_reshape как функцию, которая возвращает треугольную матрицу из 1-D массива?

ответ

20
>>> tri = np.zeros((67, 67)) 
>>> tri[np.triu_indices(67, 1)] = dm 

Для получения более подробной информации см. doc for triu_indices. Чтобы получить нижнетреугольную матрицу, используйте np.tril_indices и установите смещение на -1 вместо 1.

+0

Hi, эта решённый проблема. Надеюсь, что это также поможет другим новичкам numpy. Спасибо. – tbrittoborges

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