如何获取数组的值只有在条件相匹配



我有两个数组a&b,数组a是数值。array([27, 28, 29, 21, 17, 15, 19, 22, 18, 23, 24, 25, 30, 26])数组中b为分类值。b=array(['no', 'no', 'yes', 'yes', 'yes', 'no', 'yes', 'no', 'yes', 'yes','yes', 'yes', 'yes', 'no'], dtype=object)。如果条件是yes

,我想获得值
import numpy as np 
np.where(b =='yes',a,0)
output: array([ 0,  0, 29, 21, 17,  0, 19,  0, 18, 23, 24, 25, 30,  0])

我只想得到yes匹配的值。我可以使用if条件。但是我不想。

期望输出:

array([29 21 17 19 18 23 24 25 30])

直接使用布尔索引:

out = a[b=='yes']

输出:

array([29, 21, 17, 19, 18, 23, 24, 25, 30])

您也可以在numpy中使用掩码数组。

out_ma = np.ma.array(a, b[b=="no"])
out_ma.nonzero()

输出:

array([29, 21, 17, 19, 18, 23, 24, 25, 30])

相关内容

  • 没有找到相关文章

最新更新