当前位置:网站首页>全方位剖析Numpy中的np.diag源代码
全方位剖析Numpy中的np.diag源代码
2022-08-02 10:04:00 【舞雩.】
Numpy中内置的函数diag是一个变化莫测的函数。
这是np.diag函数的源代码:
def diag(v, k=0):
v = asanyarray(v)
s = v.shape
if len(s) == 1:
n = s[0]+abs(k)
res = zeros((n, n), v.dtype)
if k >= 0:
i = k
else:
i = (-k) * n
res[:n-k].flat[i::n+1] = v
return res
elif len(s) == 2:
return diagonal(v, k)
else:
raise ValueError("Input must be 1- or 2-d.")
我们可以看出np.diag函数可以传入的参数有 v和 k。
对于v:
v是一个数组。(一维或者二维)
当v是一个一维数组时,结果形成一个以一维数组为对角线元素的矩阵;
当v是一个二维矩阵时,结果输出矩阵的对角线元素。
对于k:
k默认等于零,意味着取对角线,位置不偏移。
如果k > 0,那么取或者放对角线上面第k斜行。
如果k < 0,那么取或者放对角线下面第k斜行。
使用案例帮助理解:
假设现在有这样一个数组array:
>>> array
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
v :二维数组,k:0
>>> np.diag(a)
array([1, 5, 9])
v:一维数组,k:0
# 把上面的array([1, 5, 9])作为输入, 即np.diag(array) = [1, 5, 9]
>>> np.diag(np.diag(a))
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
v:二维数组,k:1
>>> np.diag(array, 1)
array([2, 6])
v:一维数组,k:1
# 把上面的array([1, 5, 9])作为输入, 即np.diag(array) = [1, 5, 9]
>>> np.diag(np.diag(array), 1)
array([0 1 0 0]
[0 0 5 0]
[0 0 0 9]
[0 0 0 0]])
边栏推荐
- Application scenarios of js anti-shake function and function throttling
- LayaBox---TypeScript---装饰器
- armv7与armv8的区别(v8和w12的区别)
- Use the scrapy to climb to save data to mysql to prevent repetition
- 【云原生】快出数量级的性能是怎样炼成的?就提升了亿点点
- Shell script realizes multi-select DNS simultaneous batch resolution of domain name IP addresses (new update)
- 瑞萨RZ/G2L处理器详细测评
- 第十五章 多线程
- 适配器模式适配出栈和队列及优先级队列
- 李航《统计学习方法》笔记之监督学习Supervised learning
猜你喜欢
The heavyweights are coming!Spoilers for the highlights of the Alibaba Cloud Life Science and Intelligent Computing Summit
李航《统计学习方法》笔记之感知机perceptron
List-based queuing and calling system
Use the scrapy to climb to save data to mysql to prevent repetition
第十五章 多线程
【技术分享】OSPFv3基本原理
适配器模式适配出栈和队列及优先级队列
DVWA Clearance Log 2 - Command Injection
迭代器失效问题
你好,我的新名字叫“铜锁/Tongsuo”
随机推荐
李航《统计学习方法》笔记之朴素贝叶斯法
LayaBox---TypeScript---Mixins
R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化堆叠的柱状图(stacked bar plot)、lab.pos参数指定柱状图的数值标签的位置,lab.col参数指定数值标
MySql千万级分页优化,快速插入千万数据方法
身为程序猿——谷歌浏览器的这些骚操作你真的废吗!【熬夜整理&建议收藏】[通俗易懂]
Pytorch的LSTM参数解释
适配器模式适配出栈和队列及优先级队列
牛客刷题——剑指offer(第三期)
The 17th day of the special assault version of the sword offer
R语言ggplot2可视化:使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用tbody_add_border为表格中的表头添加外侧框线
The R language uses the ggtexttable function of the ggpubr package to visualize the table data (draw the table directly or add the table data to the image), set the theme parameter to customize the fi
QT专题:事件机制event基础篇
Naive Bayesian Method of Li Hang's "Statistical Learning Methods" Notes
未知内容监控
HikariCP数据库连接池,太快了!
WPF 截图控件之文字(七)「仿微信」
软件工程国考总结——选择题
云原生应用平台的核心模块有哪些
如何选择一块真正“好用的、性能高”的远程控制软件
TimerTask(addin timer语音)