闪耀的粒子
2021-06-18 11:58
采纳率: 33.3%
浏览 45

如何获取dataframe或array中 值为1的元素的坐标

例如我有一个5*5的矩阵

array([[0, 0, 0, 0, 1],
       [1, 1, 0, 1, 0],
       [1, 0, 1, 1, 0],
       [1, 0, 0, 1, 0],
       [1, 0, 0, 0, 1]])

第一行第五列的元素值就为1,那么把它的坐标记成(1,5),

第二行第一列的元素值也为1,记为(2,1)我想要获取矩阵中所有值为1的元素的坐标要怎么做。或者用pandas做也行

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Briwisdom 2021-06-18 12:25
    已采纳

    python矩阵坐标一般是0开始的。调用了numpy库,如下示意代码请参考。 

    import numpy as np
    
    arr=np.array([[0, 0, 0, 0, 1],
                  [1, 1, 0, 1, 0],
                  [1, 0, 1, 1, 0],
                  [1, 0, 0, 1, 0],
                  [1, 0, 0, 0, 1]])
    idx=np.array(np.where(arr==1))
    if idx.shape[1]>0:
        print('where arr==1, index is: ')
        for i in range(idx.shape[1]):
            print((idx[0,i],idx[1,i]))
    else:
        print('no exits index where arr==1')
    点赞 1 打赏 评论
  • Roc-xb 2021-06-18 12:15
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    """
    @author: YangPC
    @time:2021/06/17
    @QQ:327844761
    @微信公众号:ewbang
    """
    
    
    def fun():
        arr = [[0, 0, 0, 0, 1],
               [1, 1, 0, 1, 0],
               [1, 0, 1, 1, 0],
               [1, 0, 0, 1, 0],
               [1, 0, 0, 0, 1]]
        result = []
        for i in range(len(arr)):
            for j in range(len(arr[i])):
                if (arr[i][j] == 1):
                    result.append((i + 1, j + 1))
        print(result)
    
    
    if __name__ == '__main__':
        fun()
    

    程序输出结果:编码不易,如有帮助,望采纳!

    点赞 1 打赏 评论

相关推荐 更多相似问题