怎么获取numpy的第一个非0元素索引
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"怎么获取numpy的第一个非0元素索引",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么获取numpy的第一个非0元素索引"这篇
千家信息网最后更新 2025年01月20日怎么获取numpy的第一个非0元素索引
这篇文章主要为大家展示了"怎么获取numpy的第一个非0元素索引",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么获取numpy的第一个非0元素索引"这篇文章吧。
numpy的使用场景之一就是获取二维矩阵的每一行的第一个非零元素,这样的场景numpy也是有提供一个方法来供用户使用的
大家还是直接看代码吧~
import numpy as nparr=np.array([0,0,2,3,0,4])print((arr!=0).argmax(axis=0))#2
补充:python获取二维矩阵的每一行的第一个非零元素
直接上代码~
"""核心函数:array_1D!=0 :返回一个True/False序列array.argmax(axis=0):返回沿axis轴的最大元素的索引,当存在多个相等的最大值时,返回第一个最大值的索引"""import numpy as np array_1D = np.array([0,1,0,-1,0])array_2D = np.array( [[0, 1, 0, -1, 0], [0, 0, -1, 0, 1], [0, 1, -1, 0, 1], [4, 0, -1, 0, 1], [7, 16, -1, 0, 1]]) def get_first_non_zero_1D(array_1D): first_non_zero = array_1D[(array_1D!=0).argmax(axis=0)] return first_non_zero """备注:以下三个函数完全等价,个人比较喜欢最后一个 get_first_non_zeros_2D_2,因为看着比较舒服,也可以方便地扩展到更多维度。""" def get_first_non_zeros_2D(array_2D): first_non_zeros = np.array([get_first_non_zero_1D(array_2D[i]) for i in range(array_2D.shape[0])]) return first_non_zeros def get_first_non_zeros_2D_1(array_2D): first_non_zeros = [] for i in range(array_2D.shape[0]): arr = array_2D[i,:] first_non_zero = arr[(arr!=0).argmax(axis=0)] first_non_zeros.append(first_non_zero) return np.array(first_non_zeros) def get_first_non_zeros_2D_2(array_2D): none_zero_index = (array_2D!=0).argmax(axis=1) # first_non_zeros = np.array([array_2D[i,none_zero_index[i]] for i in range(array_2D.shape[0])]) first_non_zeros = array_2D[range(array_2D.shape[0]),none_zero_index] return first_non_zeros b = get_first_non_zeros_2D(array_2D)c = get_first_non_zeros_2D_1(array_2D)d = get_first_non_zeros_2D_2(array_2D)print(b)print(c)print(d)"""打印结果:[ 1 -1 1 4 7][ 1 -1 1 4 7][ 1 -1 1 4 7]"""
补充:[Python] np.nonzero(ndarray) 返回数组中不为0的元素的索引
语法:
函数返回值为tuple元组类型,tuple内的元素数目与ndarray维度相同。
np.nonzero(ndarray)
先强调一点,数组的索引是从0开始。
示例:
# 1维数组a = [0,2,3]b = np.nonzero(a)print(b)# (array([1, 2], dtype=int64),)# 说明:索引1和索引2的位置上元素的值非零。# 2维数组a = np.array([[0,0,3],[0,0,0],[0,0,9]])b = np.nonzero(a)print(b)# (array([0, 2], dtype=int64), array([2, 2], dtype=int64))# 说明:# tuple的每一个元素,从一个维度来确定非零元素的位置。所以对于二维数组,tuple就有两个元素。# tuple的元素的内容是该维度不为0的元素的位置,排列顺序是数组遍历的顺序。# 比如确定第一个非零元素的位置:先找tuple内的第一个元素 array([0, 2], dtype=int64)的第一个元素,为0,说明第一个非零元素在第一行;# 之后tuple内的第二个元素 array([2, 2], dtype=int64)的第一个元素,为2,说明第一个非零元素在第三列。# 3维数组a = np.array([[[0,1],[1,0]],[[0,1],[1,0]],[[0,0],[1,0]]])print(a)# [[[0 1]# [1 0]]# # [[0 1]# [1 0]]# # [[0 0]# [1 0]]]b = np.nonzero(a)print(b)# (array([0, 0, 1, 1, 2], dtype=int64), array([0, 1, 0, 1, 1], dtype=int64), array([1, 0, 1, 0, 0], dtype=int64))# 说明:由于a是3维数组,因此,索引值数组有3个一维数组,分别代表层、行、列。# 查找原理和二维数组一致,不再赘述。
以上是"怎么获取numpy的第一个非0元素索引"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
元素
数组
索引
位置
内容
维度
二维
最大
一行
函数
篇文章
代码
场景
更多
最大值
矩阵
顺序
学习
帮助
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
辽警网络安全与执法专业
网络安全法几个原则几个主张
登录吃鸡显示连接服务器错误
如何停用orical数据库
数据库系统怎么看表的分布
中期网络安全科技战略
面向对象方法把软件开发
电脑服务器终止怎么回事
查询数据库是否有该表
苏州微信软件开发平台
内蒙古数据软件开发服务标准
伟思网络安全隔离网闸
结合自身实际谈谈网络安全
开发管理和使用数据库人员主要有
怎样解决数据库连接错误
CNKI数据库总库
石家庄软件开发实习生
核酸检验管理数据库设计
数据服务器磁盘读写
军人网络安全素材
东莞无线软件开发价格
武汉市坡度数据库
软件开发拖欠工资
阿里云服务器数据库怎么访问
数据库中逻辑分级有哪些
深圳软件开发关朋友圈
找不到u8服务器管理
软件开发延期一般
软件开发马拉松
义马软件开发哪里靠谱