【问题标题】:How to remove empty element from numpy array如何从numpy数组中删除空元素
【发布时间】:2019-11-28 23:58:47
【问题描述】:

这里是一个例子:

a = np.array([[1, 2, 3,4], [], [1,2,0,9]]) 

print(a)
# array([list([1, 2, 3, 4]), list([]), list([1, 2, 0, 9])], dtype=object)

如何去除空元素并只返回:

array([[1, 2, 3, 4], [1, 2, 0, 9]], dtype=object)

【问题讨论】:

    标签: arrays list numpy slice


    【解决方案1】:

    你可以遍历数组:-

    a = np.array([[1, 2, 3,4], [], [1,2,0,9]]) 
    a1 = np.array([i for i in a if i])
    
    >>> a1
    array([[1, 2, 3, 4],
           [1, 2, 0, 9]])
    

    【讨论】:

      【解决方案2】:

      对数组和计算长度进行简单的 for 循环迭代就足以消除空元素。

      a = np.array([[1,2,3,4],[],[5,6,7,8]]
      output = []
      for elem in a:
          if elem:
                output.append(elem)
      output= np.array(output)
      

      【讨论】:

      • output 的形状和数据类型是什么?对比原来的a ?
      • 输出将是一个 numpy 数组,形状为:(numpy.ndarray, (2, 4))
      【解决方案3】:

      你可以使用过滤器:

      a = np.array([[1, 2, 3,4], [], [1,2,0,9]]) 
      list(filter(None, a))
      
      # [[1, 2, 3, 4], [1, 2, 0, 9]]
      

      【讨论】:

        【解决方案4】:

        您可以使用逻辑索引:

        a[a.astype(bool)]
        # array([list([1, 2, 3, 4]), list([1, 2, 0, 9])], dtype=object)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-21
          • 2023-03-10
          • 2011-08-18
          • 1970-01-01
          • 2018-11-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多