子集numpy数组基于另一个数组

时间:2017-11-20 17:11:43

标签: python numpy

我有2个numpy数组:

arr_a = array(['1m_nd', '2m_nd', '1m_4wk'],
      dtype='<U15')

arr_b = array([0, 1, 1])

我想根据arr_aarr_b中选择元素。我这样做: arr_a[arr_b],但我得到了这个结果:

array(['1m_nd', '2m_nd', '2m_nd'],
      dtype='<U15')

而不是:

array(['2m_nd', '1m_4wk'],
      dtype='<U15')

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

你需要传递一个布尔数组,例如:

>>> arr_a[arr_b>0]

array(['2m_nd', '1m_4wk'], 
      dtype='<U15')

答案 1 :(得分:0)

给定arr_aarr_b,运行以下内容将为arr_b中值为1 => True0 => False的每个元素提供布尔数组。相应地,使用arr_a中的索引值检查布尔值。以下是您需要的代码行。

>>> arr_a[arr_b == 1]
array([u'2m_nd', u'1m_4wk'],
      dtype='<U15')