文章目录(Table of Contents)
Add 1 to diagonal elements of a matrix(矩阵的对角元素加1)
问题
问题链接:https://mathematica.stackexchange.com/questions/156063/add-1-to-diagonal-elements-of-a-matrix
原文
I have a list of lists of numbers, for example:
{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}
The length of the list is the same length of each sublist. What I want to achieve is to add plus 1 to the diagonal elements without using For. Given the list above as an input, I need a result like this:
{{2,1,1,1},{1,2,1,1},{1,1,2,1},{1,1,1,2}}
Thank you.
翻译
我有一列包含许多有数字的列表的列表,例如:
{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}
列表的长度和列表中每个子列表的长度相等。我想做的是给对角线的元素加1,并且不使用For
循环。以上面给出的列表为例,我需要的输出如下:
{{2,1,1,1},{1,2,1,1},{1,1,2,1},{1,1,1,2}}
谢谢。
高票回答
原文
By popular demand:
list + IdentityMatrix@Length@list
I'm a big fan of IdentityMatrix -- I try to use it whenever possible.
翻译
受人气的需要:
list + IdentityMatrix@Length@list
运行结果:
我十分喜欢使用IdentityMatrix
--每当有需要我一定会使用他。
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论