基于另一个数组,对numpy数组进行子集筛选

4

I have 2 numpy arrays:

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

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

我想根据arr_barr_a中选择元素。我使用了以下代码:arr_a[arr_b],但结果如下:
array(['1m_nd', '2m_nd', '2m_nd'],
      dtype='<U15')

替代:

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

我该如何修复这个问题?


布尔索引需要一个布尔数组。 - user2357112
2个回答

8
你需要传递一个布尔数组,例如:
>>> arr_a[arr_b>0]

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接