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

时间:2011-05-02 00:40:14

标签: python matrix numpy

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

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

2 个答案:

答案 0 :(得分:13)

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

N = 100; value = 40
b = np.zeros((N, N))
np.fill_diagonal(b, value)

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

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

b = np.zeros_like(a)
np.fill_diagonal(b, value)

答案 1 :(得分:9)

易:

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

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