小编ric*_*ber的帖子

从多形状数组的列创建对角矩阵

假设我有一个像这样的数组

mat = np.array([[1,1],[2,2],[3,3]])

其形状为 (3,2)。我想通过获取数组的最后一个轴并从中创建对角矩阵来创建形状为 (3,2,2) 的新数组。我可以用 for 循环来做到这一点

mat2 = np.zeros((3,2,2))
for i in np.arange(0,3):
    mat2[i] = np.diag(mat[i])
Run Code Online (Sandbox Code Playgroud)

产生所需的输出

[[[1. 0.]
  [0. 1.]]

 [[2. 0.]
  [0. 2.]]

 [[3. 0.]
  [0. 3.]]]
Run Code Online (Sandbox Code Playgroud)

但是有没有办法在直接矢量化(更快?!)版本中做到这一点?在我的实际问题中,我有一个形状为 (...,n) 的大型高维数组,需要将最后一个轴转换为最后形状为 (...,n,n) 的对角矩阵。

python arrays numpy

5
推荐指数
1
解决办法
689
查看次数

标签 统计

arrays ×1

numpy ×1

python ×1