Вид изменений, которые вы упоминаете в комментариях к моему первому ответу, может быть выполнен с помощью функции numpy.place()
:
>>> import numpy
>>> x = numpy.array([("label1",True,3), ("label2",False,2), ("label1",True,4)],
... dtype=[("status", "|S16"), ("select", "|b1"), ("somedata", ">> mask = x["select"]
>>> numpy.place(x["somedata"], mask, (5, 6))
>>> print x
[('label1', True, 5) ('label2', False, 2) ('label1', True, 6)]
>>> numpy.place(x["status"], mask, "label3")
>>> print x
[('label3', True, 5) ('label2', False, 2) ('label3', True, 6)]
Обратите внимание, что
Я немного изменил значения и условия ради соответствующего примера.
На этот раз значения, где mask
равно True
, выбираются снова,не замаскированы, как в моем предыдущем ответе.
==True
часть в вашей маске condit
является избыточной, просто оставьте ее:)