python - 如何编写numpy函数,在python中将它的第k对角线返回为0?
问题描述
NumPy 函数,它接受一个矩阵和一个整数 k 作为参数,并返回该矩阵的一个副本,使得其第 k 个对角线下的所有元素都为零。主对角线是第 0 条,它上面的对角线编号为 1、2、...。. .,下面的对角线编号为 -1、-2、. . .. 也就是说,1 是主对角线上方的第一条对角线,2 是主对角线上方的第二条对角线,以此类推。-1 是主对角线下方的第一条对角线,-2 是主对角线下方的第二条对角线。
我想我想出了如何做对角线,但后来我被卡住了:
def EX4(N):
Z=np.zeros((N,N)) #create a array N x N which contains only zero elements
#Set the diagonal to 1
for i in range(k,N):
Z[i,i]=1
return Z
k=1 EX4(5)
解决方案
您可能正在寻找numpy.triu()
,它完全支持这种行为。
>>> import numpy as np
>>> x = np.array([[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]])
>>> np.triu(x, 0)
array([[1, 1, 1, 1, 1],
[0, 1, 1, 1, 1],
[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 1]])
>>> np.triu(x, 1)
array([[0, 1, 1, 1, 1],
[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 1],
[0, 0, 0, 0, 0]])
>>> np.triu(x, 2)
array([[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
推荐阅读
- php - 为什么在 phpmyadmin 上登录提交后出现 403 错误
- android - 如何实现动态 API 处理?
- laravel - 如何以laravel方式从远距离关系中获取计数?
- c# - 如何正确地从 ViewModel 调用 Dialog?
- web - 利用浏览器缓存 - 我已启用此功能,但 GT Metrix 未显示
- c# - DialogOpenedAttached 中的“TypeConverter 无法从 System.String 转换”
- vue.js - 如何用 Font Awesome 图标替换默认的 Quill.js dropdown.svg?
- html - 是否可以使特定 div 类中的最后一个 p 具有特定的 css?
- c# - 序列化所有 Kendo Grid 页面的数据
- python-3.x - 将我的文件保存在共享驱动器上 google colab