关于X[y==0, 0]的疑问
来源:3-12 数据加载和简单的数据探索
Echo鑫
2017-12-21
老师,我在看到X[y==0, 0]的时候,有点没理解,y怎么能成为X矩阵中的筛选条件。
X = iris.data[:, :2]和y = iris.target 一个是(150,2)矩阵 ,另一个是0 1 2 组成的一维向量,
单独分出来看的话,这是两个不同的矩阵,没有关联关系,X[y ==0,0],这个y==0的条件又怎么能成为X矩阵中的筛选条件,这个条件按理说是在X中没有匹配值的。
这是不是两个矩阵iris.data和iris.target的关联关系是在内部定义好了的,所以y才能成为X中的筛选条件?
7回答
-
首先,X和y确实存在内部的关联的。这个内部关联是逻辑上的关联,不是程序上的关联。X是一个150行4列的矩阵,代表有150个样本,每个样本有4个特征。y是一个有150个元素的向量,其中每一个元素代表对应样本是哪一种鸢尾花。所以X的第i行即X[i]对应的鸢尾花种类为y[i]。这个逻辑是X和y之间的全部关联。
y==0返回的是一个布尔向量。这一点很关键。试试在notebook中输入y==0打印看一下,结果包含有150个布尔值。如果(y==0)[i] 等于True,表示第i个元素的取值为0(第0种鸢尾花);如果(y==0)[i] 等于False,表示第i个元素取值不为0(不是第0种鸢尾花)。
现在我希望找到第0种鸢尾花对应的X的内容。再看一下我们在第10小节最后举得例子。我们可以用布尔数组作为Fanxy Index,在矩阵中去取值。X[y==0,:]相当于是先求出了使y==0的索引都有谁(对应布尔数组中的True),然后用这些索引取出X中相应的行。
1652019-09-19 -
慕勒0317721
2023-07-17
其实就是 target 中150个花的排序和data中的排序是相同的
00 -
刘刘刘刘刘英迪
2020-04-06
非常感谢!也是看了问题才明白,感觉这里的用法真的巧妙!
当然,前提是X和y有对应关系~~~大家加油!:)
00 -
weixin_慕数据1225228
2020-03-12
我看的时候也疑惑了, 还好找到了解答, 非常感谢
00 -
慕粉1754206542
2019-03-02
也解决了我的疑问。最重要的是理解numpy向量可通过布尔值进行索引。thx
00 -
慕姐813587
2018-03-10
明白了。感谢。
00 -
奔跑的小女子
2018-01-06
非常感谢 ,我之前也有这样的疑惑,已解决
00
相似问题