我有两个数组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])