[target == t,1]的语法说明

时间:2014-12-07 16:07:22

标签: python numpy machine-learning

我正在读这本书:"用Python构建机器学习系统"。 在Iris日期的分类中,我无法理解语法:

plt.scatter(features[target == t,0],
                   features[target == t,1],
                   marker=marker,
                   c=c)

具体来说,features[target == t,0]实际意味着什么?

2 个答案:

答案 0 :(得分:6)

查看this代码,似乎featurestarget都是数组,t是数字。此外,featurestarget都有相同的行数。

在这种情况下,features[target == t, 0]执行以下操作:

  • target == t创建一个与target形状相同的布尔数组(如果值为True则为t,否则为False)。< / p>

  • features[target == t, 0]features中选择与True数组中的target == t对应的行。 0指定应选择features的第一列。

换句话说,代码选择features等于target的{​​{1}}行,t从这些行中选择第一列。< / p>

答案 1 :(得分:0)

对此的更好解释可能是这个for循环将特征数组分成3个不同的数组,每个数组对应于特定的Iris种类。 所有这些阵列都具有特定工厂(实例)的第一个特征。 如果您print features[target==t,0]

,这将是输出
[ 5.1  4.9  4.7  4.6  5.   5.4  4.6  5.   4.4  4.9  5.4  4.8  4.8  4.3  5.8
  5.7  5.4  5.1  5.7  5.1  5.4  5.1  4.6  5.1  4.8  5.   5.   5.2  5.2  4.7
  4.8  5.4  5.2  5.5  4.9  5.   5.5  4.9  4.4  5.1  5.   4.5  4.4  5.   5.1
  4.8  5.1  4.6  5.3  5. ]
[ 7.   6.4  6.9  5.5  6.5  5.7  6.3  4.9  6.6  5.2  5.   5.9  6.   6.1  5.6
  6.7  5.6  5.8  6.2  5.6  5.9  6.1  6.3  6.1  6.4  6.6  6.8  6.7  6.   5.7
  5.5  5.5  5.8  6.   5.4  6.   6.7  6.3  5.6  5.5  5.5  6.1  5.8  5.   5.6
  5.7  5.7  6.2  5.1  5.7]
[ 6.3  5.8  7.1  6.3  6.5  7.6  4.9  7.3  6.7  7.2  6.5  6.4  6.8  5.7  5.8
  6.4  6.5  7.7  7.7  6.   6.9  5.6  7.7  6.3  6.7  7.2  6.2  6.1  6.4  7.2
  7.4  7.9  6.4  6.3  6.1  7.7  6.3  6.4  6.   6.9  6.7  6.9  5.8  6.8  6.7
  6.7  6.3  6.5  6.2  5.9]