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

3
这里是一个例子:

这里有一个示例:

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个回答

7
您可以使用逻辑索引:
a[a.astype(bool)]
# array([list([1, 2, 3, 4]), list([1, 2, 0, 9])], dtype=object)

2
你可以循环遍历这个数组:-
最初的回答
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
你可以使用过滤器(filter):最初的回答
a = np.array([[1, 2, 3,4], [], [1,2,0,9]]) 
list(filter(None, a))

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

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)

output的形状和数据类型是什么?与原始的a相比呢? - hpaulj
输出将是一个 numpy 数组,其形状为:(numpy.ndarray, (2, 4))。 - Deepak Yadav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接