从两个列表中删除 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])
我正在处理两个等长的 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])