Python [target==t,1]的语法解释
我正在读一本书:“用Python构建机器学习系统”。 在虹膜日期分类中,我很难理解以下语法:Python [target==t,1]的语法解释,python,numpy,machine-learning,Python,Numpy,Machine Learning,我正在读一本书:“用Python构建机器学习系统”。 在虹膜日期分类中,我很难理解以下语法: plt.scatter(features[target == t,0], features[target == t,1], marker=marker, c=c) 具体来说,features[target==t,0]实际上意味着什么?看看代码,似乎features和target都是数组,而
plt.scatter(features[target == t,0],
features[target == t,1],
marker=marker,
c=c)
具体来说,features[target==t,0]
实际上意味着什么?看看代码,似乎features
和target
都是数组,而t
是一个数字。此外,功能
和目标
的行数相同
在这种情况下,特性[target==t,0]
执行以下操作:
创建与target==t
形状相同的布尔数组(如果值为target
,则为t
,否则为True
)False
从features[target==t,0]
中选择与features
数组中的target==t
对应的行。True
指定应选择0
功能的第一列
特征
的行,其中目标
等于t
,并且从这些行中,0
选择第一列。查看代码,似乎特征
和目标
都是数组,t
是一个数字。此外,功能
和目标
的行数相同
在这种情况下,特性[target==t,0]
执行以下操作:
创建与target==t
形状相同的布尔数组(如果值为target
,则为t
,否则为True
)False
从features[target==t,0]
中选择与features
数组中的target==t
对应的行。True
指定应选择0
功能的第一列
换言之,代码选择
特征
的行,其中目标
等于t
,并且从这些行中,0
选择第一列。对此的更好解释可能是,此for循环将特征数组拆分为3个不同的数组,每一种都对应于一种特定的鸢尾。
所有这些阵列都具有特定设备(实例)的第一个功能。
如果您打印功能[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]
对此更好的解释可能是,这个for循环将特征数组分割为3个不同的数组,每个数组对应一种特定的虹膜。 所有这些阵列都具有特定设备(实例)的第一个功能。 如果您
打印功能[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]
target==t
如果它们相等,则计算结果为True
;如果它们不相等,则计算结果为False
。然后你就有了,例如,特性[True,0]
@JonathonReinhart,在这种情况下,这可能是不正确的。它通过布尔数组使用索引。@cel但他就是这么说的@DanielRoseman,哦,那是个误会。@DanielRoseman事实上,他不是这么说的。布尔数组和布尔数组不同。请参阅下面已接受的答案。target==t
如果它们相等,将计算为True
;如果它们不相等,则计算为False
。然后你就有了,例如,特性[True,0]
@JonathonReinhart,在这种情况下,这可能是不正确的。它通过布尔数组使用索引。@cel但他就是这么说的@DanielRoseman,哦,那是个误会。@DanielRoseman事实上,他不是这么说的。布尔数组和布尔数组不同。请参阅下面的公认答案。