当前位置:网站首页>全方位剖析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]])
边栏推荐
- 享年94岁,图灵奖得主、计算复杂性理论先驱Juris Hartmanis逝世
- logo 图标(php图片加文字水印)
- R语言ggplot2可视化:使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用tbody_add_border为表格中的表头添加外侧框线
- Shell脚本实现多选DNS同时批量解析域名IP地址(新更新)
- Use the scrapy to climb to save data to mysql to prevent repetition
- 如何搭建威纶通触摸屏与S7-200smart之间无线PPI通信?
- 图形化矩阵,矩阵到底长什么样?
- R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化堆叠的柱状图(stacked bar plot)、lab.pos参数指定柱状图的数值标签的位置,lab.col参数指定数值标
- 适配器模式适配出栈和队列及优先级队列
- 新“内卷”席卷科技圈,Google CEO 要求 174000 员工提高工作效率!
猜你喜欢
Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence
用了TCP协议,就一定不会丢包嘛?
适配器模式适配出栈和队列及优先级队列
用汇编实现爱心特效【七夕来袭】
Long battery life or safer?Seal and dark blue SL03 comparison shopping guide
ConvNeXt论文及实现
MySql千万级分页优化,快速插入千万数据方法
The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes
HikariCP数据库连接池,太快了!
带你认识40G单纤双向光模块-QSFP+ BiDi光模块
随机推荐
关于缓存数据的探讨
Implementation of mysql connection pool
R语言ggpubr包的ggline函数可视化分组折线图、add参数为mean_se和dotplot可视化不同水平均值的折线图并为折线图添加误差线(se标准误差)和点阵图、自定义palette设置颜色
日元疲软令游戏机在日本变身“理财产品”:黄牛大赚
php组件漏洞
TimerTask(addin timer语音)
LayaBox---TypeScript---声明合并
matlab-day02
链表的实现
LayaBox---TypeScript---Mixins
LayaBox---TypeScript---模块
R language ggplot2 visualization: based on the fill parameter and shape parameter in the aes function, custom draw a grouped line chart and add data points (scatter points), use the legend.position fu
一款优秀的中文识别库——ocr
迭代器失效问题
Smoothing of time series data in R language: smoothing time series data to remove noise using the dpill function and locpoly function of the KernSmooth package
The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes
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---装饰器
行为型模式-模板方法模式
软件测试与质量 之白盒测试