我想询问是否有一种干净的方法来检查包含其他数组的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]
答案 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 );
获取我的结果