具有恒定对角线的空矩阵,具有与另一矩阵相同的形状

Arj*_*ini 12 python numpy matrix

我想知道是否有一种简单的方法可以将numpy矩阵乘以标量.基本上我希望所有的值都乘以常数40.这将是一个在对角线上有40个的nxn矩阵,但我想知道是否有一个更简单的函数来用来缩放这个矩阵.或者我将如何制作与我的其他矩阵具有相同形状的矩阵并填充其对角线?

对不起,如果这看起来有点基础,但由于某种原因,我在文档中找不到这个.

Eri*_*got 13

如果你想要一个在对角线上有40并且在其他地方都为零的矩阵,你可以fill_diagonal()在零矩阵上使用NumPy的函数.你可以这样直接做:

N = 100; value = 40
b = np.zeros((N, N))
np.fill_diagonal(b, value)
Run Code Online (Sandbox Code Playgroud)

这仅涉及将元素设置为某个值,因此可能比涉及将矩阵的所有元素乘以常量的代码更快.这种方法还具有明确显示您使用特定值填充对角线的优势.

如果希望对角矩阵b与另一个矩阵具有相同的大小a,可以使用以下快捷方式(不需要显式大小N):

b = np.zeros_like(a)
np.fill_diagonal(b, value)
Run Code Online (Sandbox Code Playgroud)


Jos*_*del 9

简单:

N = 100
a = np.eye(N)  # Diagonal Identity 100x100 array
b = 40*a  # Multiply by a scalar
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个numpy矩阵和一个数组,你可以做a = np.asmatrix(np.eye(N)).但总的来说*是numpy中的元素乘法.

  • 如果性能是一个问题,OP可能不想创建副本`b`,在这种情况下`a*= 40`将就地扩展数组. (3认同)