从两个列表中删除 NoneType

Remove NoneType from two lists

我正在处理两个等长的 np.arrays。其中之一包含 None 个元素。我想从那个数组中删除它们,也想从另一个数组中的相应元素中删除它们。

我天真地以为这样就可以了:

ToFRemove = (None == ListA)  # Find None type                          

ListA = ListA[not ToFRemove]
ListB = ListB[not ToFRemove]

这适用于查找其他常规元素。但是,我得到 False 作为 ToFRemove 的值,所以这不起作用。

我想我应该写一些迭代器来找到 None 中的元素,就像在 this answer 中一样,但我不知道怎么做。

我会这样做

np_array[np_array != np.array(None)]

语句np_array != np.array(None) 输出一个布尔数组。这个布尔数组将具有 'False' ,其中元素是 'None' 类型,而对于其他元素则为 True 。对应于 'True' 的索引保留在结果数组中,对应于 'False' 的索引被删除。

将此应用于您的问题

ToKeep = (ListA != np.array(None))
ListA = ListA[ToKeep]
ListB = ListA[ToKeep]
ToFRemove = np.array([x is None for x in ListA])