将一个numpy数组映射到另一个条件上

时间:2014-05-01 17:55:15

标签: python arrays numpy map

我有三个数组,寻找最终输出:

a = (array(['Call', 'Call', 'Call', 'Call', 'NoCall', 'Call', 'NoCall', 'Call']))

b      = (array(['1', '1', '1', '1', '1', '1', '1', '1']))
c      = (array(['2', '2', '2', '2', '2', '2', '2', '2']))
output = (array(['1', '1', '1', '1', '2', '1', '2', '1']))

我试过"for"循环,它没有替换值。这些是numpy(长)数组。我在考虑使用itertools或numpy.map?如果a ="NoCall"中的元素,则将b中的值从1更改为

1 个答案:

答案 0 :(得分:4)

使用np.where

>>> np.where(a=='Call', b, c)
array([u'1', u'1', u'1', u'1', u'2', u'1', u'2', u'1'], 
      dtype='<U1')