将两值numpy数组屏蔽为0-1二进制数组

时间:2014-07-01 00:19:58

标签: python numpy

我有以下numpy数组:

array(['NONRBP', 'RBP', 'NONRBP', 'RBP'], dtype=object)

我想要做的是屏蔽上面的数组,给RBP值1,给NONRBP 0,结果如下:

array([0, 1, 0, 1])

这样做的方法是什么?

3 个答案:

答案 0 :(得分:4)

对于更像numpy的解决方案,你可以这样做:

a = array(['NONRBP', 'RBP', 'NONRBP', 'RBP'], dtype=object)
mask = (a == 'RBP').astype(int)

您也可以使用以下方式进行操作:

a[:] = (a == 'RBP').astype(int)

答案 1 :(得分:1)

不一定是特定的numpy。您可以使用列表推导来输入array的构造函数:

array(  [(1 if x == 'RBP' else 0) for x in l]  )

答案 2 :(得分:1)

我只是在这里使用列表理解。

>>> from numpy import array
>>> a=array(['NONRBP', 'RBP', 'NONRBP', 'RBP'], dtype=object)
>>> mask=array([int(x=='RBP') for x in a])
>>> mask
array([0, 1, 0, 1])