numpy `diagflat` для указанной оси - PullRequest
       4

numpy `diagflat` для указанной оси

0 голосов
/ 21 сентября 2018

Я хочу расширить ось ndarray до диагональной матрицы в стиле diagflat

Например,

In [ ]: import numpy as np

In [ ]: example = np.random.random((200, 5))
In [ ]: example.shape
Out[ ]: (200, 5)

То, что я ищу, это что-то вроде:

In [ ]: np.diagflat(example, axis=-1).shape
Out[ ]: (200, 5, 5)

diagflat имеет, однако, axis аргумент.Моя идея заключалась в том, чтобы просто вставить новую ось, например, и умножить ее на единичную матрицу.

In [ ]: Id = np.eye(example.shape[-1])
In [ ]: (example[..., np.newaxis] @ Id).shape
ValueError: shapes (200,5,1) and (5,5) not aligned: 1 (dim 2) != 5 (dim 0)

Однако это вызывает ошибку, по-видимому, широковещательная передача не применяется для умножения матриц.Есть ли элегантное решение, или мне нужно создать и заполнить массив вручную?

1 Ответ

0 голосов
/ 21 сентября 2018

Просто сделайте:

example[..., np.newaxis] * Id
...