如何解决具有恒定对角线的空矩阵,具有与另一个矩阵相同的形状
| 我想知道是否有一种简单的方法将numpy矩阵乘以标量。本质上,我希望所有值都乘以常数40。这将是一个对角线为40的nxn矩阵,但是我想知道是否有更简单的函数来缩放该矩阵。或者我将如何制作形状与其他矩阵相同的矩阵并填写其对角线? 抱歉,这似乎有点基础,但是由于某种原因,我在文档中找不到此内容。解决方法
如果您想要一个对角线为40且在其他所有位置为零的矩阵,则可以在零矩阵上使用NumPy函数
fill_diagonal()
。因此,您可以直接执行以下操作:
N = 100; value = 40
b = np.zeros((N,N))
np.fill_diagonal(b,value)
这仅涉及将元素设置为某个值,因此可能比涉及将矩阵中所有元素乘以常数的代码更快。该方法还具有显式显示用特定值填充对角线的优点。
如果希望对角矩阵b
与另一个矩阵a
具有相同的大小,则可以使用以下快捷方式(不需要明确的大小N
):
b = np.zeros_like(a)
np.fill_diagonal(b,value)
,简单:
N = 100
a = np.eye(N) # Diagonal Identity 100x100 array
b = 40*a # Multiply by a scalar
如果您实际上想要一个numpy矩阵而不是一个数组,则可以执行a = np.asmatrix(np.eye(N))
。但通常ѭ8是numpy中的元素方式乘法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。