当前位置:网站首页>全方位剖析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]])边栏推荐
- 用了TCP协议,就一定不会丢包嘛?
- R语言ggpubr包的ggbarplot函数可视化分组柱状图、设置add参数为mean_se可视化不同水平均值的柱状图并为柱状图添加误差线(se标准误差)、position参数自定义分组柱状图分离
- 零代码工具推荐---HiFlow
- 带你认识40G单纤双向光模块-QSFP+ BiDi光模块
- 行为型模式-模板方法模式
- 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
- The R language uses the rollapply function in the zoo package to apply the specified function to the time series in a rolling manner and the window moves, and set the align parameter to specify that t
- 读博一年后对机器学习工程的思考
- LayaBox---TypeScript---命名空间和模块
- DirectX修复工具增强版「建议收藏」
猜你喜欢

阿里巴巴 CTO 程立:开源是基础软件的源头!

DVWA 通关记录 2 - 命令注入 Command Injection

从零开始入门单片机(一):必会背景知识总结

Using the TCP protocol, will there be no packet loss?

要长续航还是更安全?海豹与深蓝SL03对比导购

【新版干货书】深度伪造 (DeepFakes):创造,检测和影响

牛客网项目17节生成验证码 刷新验证码一直没反应

Shell脚本实现多选DNS同时批量解析域名IP地址(新更新)

Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence

8月份的.NET Conf 活动 专注于 .NET MAUI
随机推荐
Facebook's automated data analysis solution saves worry and effort in advertising
阿里巴巴 CTO 程立:开源是基础软件的源头!
Linux system uninstall, install, upgrade, migrate clickHouse database
Pytorch's LSTM parameters explained
Verilog's random number system task----$random
从零开始入门单片机(一):必会背景知识总结
一文带你了解推荐系统常用模型及框架
软件测试与质量 之白盒测试
链表的实现
MSYS2 QtCreator Clangd 代码分析找不到 mm_malloc.h的问题补救
适配器模式适配出栈和队列及优先级队列
qq邮箱日发5万邮件群发技术(qq邮箱怎样定时发送邮件)
超赞!发现一个APP逆向神器!
Mistakes in Brushing the Questions 1-Implicit Conversion and Loss of Precision
R语言时间序列数据算术运算:使用log函数将时间序列数据的数值对数化、使用diff函数计算对数化后的时间序列数据的逐次差分(计算价格的对数差分)
每日一题练习1-15
用了TCP协议,就一定不会丢包嘛?
MySql tens of millions of paging optimization, fast insertion method of tens of millions of data
In the whole development of chi V853 board tried to compile QT test
第十六章 协程