Numpy lil_matrix对象数组 - 是空的吗?

时间:2015-10-01 12:42:20

标签: python numpy scipy

我想询问是否有一种干净的方法来检查包含其他数组的numpy对象数组中的空元素。 在我以前做这个基本上检查内部对象的大小并且如果x是一个numpy数组时工作正常:

[True if np.size(x) == 0 else False for x in metrics]

x是scipy稀疏lil_matrix数组时,这不起作用,其中size返回0

有没有什么好方法可以检查metrics[x] == []?那么如果还没有设置呢?

编辑:举个例子

import numpy as np
from scipy.sparse import lil_matrix
metrics = np.empty(5, dtype=object)
metrics[2] = np.zeros((3,3))
metrics[3] = lil_matrix(np.zeros((3,3),dtype=bool))

我想知道0,1,4是空的而2,3不是

如果我运行上述命令,我会得到:

In [6]: [True if np.size(x) == 0 else False for x in metrics]
Out[6]: [False, False, False, True, False]

这不是我想要的。我想要[True, True, False, False, True]

2 个答案:

答案 0 :(得分:0)

我不知道它是否适用于lil_matrix,但你可以使用类似于numpy数组的any()函数:

a = np.array([])
b = np.array([1,2])
c = np.array([b,b,a,b])
d = [not m.any() for m in b]

这将为您提供True / False列表。那么你需要一些想法:

all(d)

答案 1 :(得分:0)

实际上我找到了解决方案。显然,空对象数组将元素设置为None。 然后我就可以了

string[i] = malloc( (MAX + 1) * sizeof char );

获取我的结果