我有以下numpy数组:
array(['NONRBP', 'RBP', 'NONRBP', 'RBP'], dtype=object)
我想要做的是屏蔽上面的数组,给RBP值1,给NONRBP 0,结果如下:
array([0, 1, 0, 1])
这样做的方法是什么?
答案 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])