怎么获取numpy的第一个非0元素索引
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,这篇文章主要为大家展示了"怎么获取numpy的第一个非0元素索引",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么获取numpy的第一个非0元素索引"这篇
千家信息网最后更新 2024年11月29日怎么获取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安全错误
数据库的锁怎样保障安全
网络安全管理中心主任
数据库更改主键
反洗钱软件开发要求
腾讯云服务器免费获取
浙江笋尖网络技术有限公司
八八零网络技术
人间地狱服务器月租
微软如何提高网络安全性
陕西卫视网络安全特别晚会
海淀区智能网络技术质量保证
数据库备份还原和原来一样吗
博智网络安全物理隔离系统
凯德集团软件开发
贝德尔软件开发公司招聘
中国香港超频服务器解决方案
软件开发乙方很卑微
数据库实现整体数据的结构化
昆山什么是网络技术诚信经营
冷水滩国家网络安全宣传
企业签名ios软件开发
新电脑怎么连接外置服务器
app软件开发价格实惠
vpn服务器容量
数据库导出按钮为灰色
中央2套 网络安全
河北时代网络技术
服务器安全输入528
学软件开发编程要学什么
包头 网络安全产品
联想服务器sn号