Python 使用numpy ndarray索引numpy ndarray

Python 使用numpy ndarray索引numpy ndarray,python,numpy,scikit-learn,labeling,Python,Numpy,Scikit Learn,Labeling,我正在做一个关于iris数据集的教程。在这个过程中,我发现了一段我无法理解的代码: 它由两个数据阵列组成: iris.target_names[clf.predict(test[features])] >>> array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa'

我正在做一个关于iris数据集的教程。在这个过程中,我发现了一段我无法理解的代码:

它由两个数据阵列组成:

iris.target_names[clf.predict(test[features])]
>>> array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
'setosa', 'setosa', 'versicolor', 'versicolor', 'versicolor', 'versicolor',  
'versicolor', 'versicolor', (...), dtype='<U10')
iris.target_names
是一个带有目标变量标签的numpy数组:

iris.target_names
>>> array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
下面的代码为我的预测创建了一个带标签的ndarray:

iris.target_names[clf.predict(test[features])]
>>> array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
'setosa', 'setosa', 'versicolor', 'versicolor', 'versicolor', 'versicolor',  
'versicolor', 'versicolor', (...), dtype='<U10')
iris.target_名称[clf.predict(测试[功能])
>>>数组(['setosa','setosa','setosa','setosa','setosa','setosa','setosa',',
“setosa”、“setosa”、“setosa”、“setosa”、“setosa”、“setosa”、“setosa”,
“setosa”、“setosa”、“versicolor”、“versicolor”、“versicolor”、“versicolor”,

“versicolor”,“versicolor',(…),dtype=”如果我们忽略整个机器学习方面,并将其提取为一个简化示例:

In[6]:
# our classes
classes=np.array(['a','b','c'])
# generate some random labels
predict= np.random.randint(0,3,10)
predict
Out[6]: array([0, 2, 1, 0, 2, 0, 1, 2, 1, 0])
现在,如果我们将
predict
数组作为
classes
上的掩码传递,我们将
0,1,2
转换到数组中的顺序位置:

In[7]
classes[predict]
Out[7]: 
array(['a', 'c', 'b', 'a', 'c', 'a', 'b', 'c', 'b', 'a'], 
      dtype='<U1')
[7]中的

班级[预测]
出[7]:
数组(['a','c','b','a','c','a','b','c','b','a'],

dtype='您正在使用预测的类索引回原始标签,因此
0,1,2
被转换到
目标名称中的顺序位置
数组,给出
'setosa','versicolor','virginica'
就像位置选择一样:-)
In[8]:
classes[[1,0,2]]

Out[8]: 
array(['b', 'a', 'c'], 
      dtype='<U1')
In[9]:
classes[[0,0,0,0]]

Out[9]: 
array(['a', 'a', 'a', 'a'], 
      dtype='<U1')