将两个值的numpy数组转化为0-1二进制数组

1 投票
3 回答
1943 浏览
提问于 2025-04-18 11:39

我有一个这样的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])

撰写回答