import pandas as pd
import numpy as np
binArray = np.array([[1, 0, 1]])
print(binArray)
list = ('Text0', 'Text1', 'Text2')
indx = pd.Index(list)
print(indx)
嗨!
如何提取' Text0'和' Text2'在binArray变量的帮助下?请注意binArray和amp; indx在我的代码中总是长度为N.
谢谢!
答案 0 :(得分:0)
可能是使用np.where()
和np.take()
来执行所需的操作。
binArray = np.array([[1, 0, 1]]) # Are you sure its not [] instead of [[]]
list = ('Text0', 'Text1', 'Text2')
indx = pd.Index(list)
# get indices for all 1 in binArray[0]
indices = np.where(binArray[0]==1)[0]
result = np.take(indx, indices)
您的结果现在是Index([u'Text0', u'Text2'], dtype='object')
,这正是您所需要的。
np.take()
将数组和索引作为参数,并返回与数组中的索引对应的值。例如:
>>> a = [4, 3, 5, 7, 6, 8]
>>> indices = [0, 1, 4]
>>> np.take(a, indices)
array([4, 3, 6])
np.where()
根据给定条件返回给定数组中的元素。在这种情况下,我们要求来自binArray[0]
的所有索引,其值为1
,其indx
中的相应地图是您最终结果所需的地图。