将两个值的numpy数组转化为0-1二进制数组
我有一个这样的numpy数组:
array(['NONRBP', 'RBP', 'NONRBP', 'RBP'], dtype=object)
我想对这个数组进行处理,把RBP的值设为1,把NONRBP的值设为0,最终得到这个结果:
array([0, 1, 0, 1])
请问怎么做呢?
3 个回答
1
这不一定是numpy特有的。你可以用列表推导式来给array
的构造函数提供输入:
array( [(1 if x == 'RBP' else 0) for x in l] )
4
如果你想要一个更像numpy的解决方案,可以这样做:
a = array(['NONRBP', 'RBP', 'NONRBP', 'RBP'], dtype=object)
mask = (a == 'RBP').astype(int)
你也可以直接在原来的地方进行这个操作,使用:
a[:] = (a == 'RBP').astype(int)
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])