python获取二维矩阵的每一行的第一个非零元素

python获取二维矩阵的每一行的第一个非零元素,第1张

概述直接上代码:"""核心函数:array_1D!=0:返回一个True/False序列array.argmax(axis=0):返回沿axis轴的最大元素的索引,当存在多个相等的最大值时,返回第一个最大值的索引"""importnumpyasnparray_1D=np.array([0,1,0,-1,0])array_2D=np.array([[0,1,0,-1,0],

直接上代码:

"""核心函数:array_1D!=0 :返回一个True/False序列array.argmax(axis=0):返回沿axis轴的最大元素的索引,当存在多个相等的最大值时,返回第一个最大值的索引"""import numpy as nparray_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_zerosdef 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_zerosb = 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]"""

参考:https://blog.csdn.net/dlhlSC/article/details/88080283

总结

以上是内存溢出为你收集整理的python获取二维矩阵的每一行的第一个非零元素全部内容,希望文章能够帮你解决python获取二维矩阵的每一行的第一个非零元素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1187005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存