如何有效地将布尔numpy数组转换为阈值布尔数组?
发布时间:2020-12-20 11:38:35 所属栏目:Python 来源:网络整理
导读:我正在使用 Python 2.7和NumPy来处理大型布尔值数组. 我有一个数组A,就像这样: Aarray([[[False,False,True,True],[False,True]],[[False,True]]]) 我必须将它转换为这样的布尔数组: Barray([[[True,[True,True]]]) 因此,我们的想法是每行的最后一个False
我正在使用
Python 2.7和NumPy来处理大型布尔值数组.
我有一个数组A,就像这样: >>> A array([[[False,False,True,True],[False,True]],[[False,True]]]) 我必须将它转换为这样的布尔数组: >>> B array([[[True,[True,True]]]) 因此,我们的想法是每行的最后一个False值应该保留,任何其他值都应该为True. 有没有办法使用NumPy而不使用for循环(这很慢)? 解决方法
您也可以使用xor运算符^来实现此目的.只需将数据“leftshift”一个,然后向右添加True值,然后xor new和old数组:
A = np.array([[False,True]]) X = np.hstack((A[:,1:],np.array(np.ones((A.shape[0],1)),dtype=np.bool)))) >>> array([[False,True]]) np.invert(A ^ X) >>> array([[True,True]]) 仅当剩下所有False值且仅后跟True值时,此方法才有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |