我有2个numpy数组:
arr_a = array(['1m_nd', '2m_nd', '1m_4wk'],
dtype='<U15')
arr_b = array([0, 1, 1])
我想根据arr_a
从arr_b
中选择元素。我这样做:
arr_a[arr_b]
,但我得到了这个结果:
array(['1m_nd', '2m_nd', '2m_nd'],
dtype='<U15')
而不是:
array(['2m_nd', '1m_4wk'],
dtype='<U15')
我该如何解决这个问题?
答案 0 :(得分:2)
你需要传递一个布尔数组,例如:
>>> arr_a[arr_b>0]
array(['2m_nd', '1m_4wk'],
dtype='<U15')
答案 1 :(得分:0)
给定arr_a
和arr_b
,运行以下内容将为arr_b
中值为1 => True
和0 => False
的每个元素提供布尔数组。相应地,使用arr_a
中的索引值检查布尔值。以下是您需要的代码行。
>>> arr_a[arr_b == 1]
array([u'2m_nd', u'1m_4wk'],
dtype='<U15')