如何从numpy数组中删除空元素

时间:2019-07-20 04:22:22

标签: arrays list numpy slice

这里有个例子:

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)

4 个答案:

答案 0 :(得分:3)

您可以使用逻辑索引:

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

答案 1 :(得分: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 :(得分:0)

在数组和计算长度上进行简单的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)

答案 3 :(得分:0)

您可以使用过滤器:

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

# [[1, 2, 3, 4], [1, 2, 0, 9]]