从numpy数组中删除None的有效方法

时间:2014-08-12 01:42:11

标签: python numpy

是否有一种有效的方法可以从numpy数组中删除Nones并将数组的大小调整为新的大小?

例如,如果不在python中迭代它,如何从此帧中删除None。我可以轻松地遍历它,但正在进行一次可能被多次调用的api调用。

a = np.array([1,45,23,23,1234,3432,-1232,-34,233,None])

2 个答案:

答案 0 :(得分:22)

In [17]: a[a != np.array(None)]
Out[17]: array([1, 45, 23, 23, 1234, 3432, -1232, -34, 233], dtype=object)

以上是有效的,因为a != np.array(None)是一个布尔数组,用于映射非None值:

In [20]: a != np.array(None)
Out[20]: array([ True,  True,  True,  True,  True,  True,  True,  True,  True, False], dtype=bool)

以这种方式选择数组元素称为boolean array indexing

答案 1 :(得分:2)

我使用以下内容比接受的答案更简单:

a = a[a != None]