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

0 投票
1 回答
2048 浏览
提问于 2025-04-18 05:01

我有三个数组,想要得到最终的输出:

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')

撰写回答