在条件下将一个numpy数组映射到另一个数组
我有三个数组,想要得到最终的输出:
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 改成 2。
1 个回答
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')