请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于X[y==0, 0]的疑问

老师,我在看到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中相应的行。

16 回复 有任何疑惑可以回复我~
  • 提问者 Echo鑫 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-12-21 18:34:15
  • 哇,我在看的时候也懵逼了,还以为哪里没有看懂,又回去倒数第三节的比较课程里又看了一遍,原来是这样。老师很皮啊!!!!
    回复 有任何疑惑可以回复我~ 2018-01-24 15:48:42
  • y==0返回的是一个布尔向量,这么一说就了然了,3Q
    回复 有任何疑惑可以回复我~ 2018-05-22 14:27:10
慕勒0317721 2023-07-17 22:10:49

其实就是 target 中150个花的排序和data中的排序是相同的

0 回复 有任何疑惑可以回复我~
刘刘刘刘刘英迪 2020-04-06 00:46:13

非常感谢!也是看了问题才明白,感觉这里的用法真的巧妙!


当然,前提是X和y有对应关系~~~大家加油!:)

0 回复 有任何疑惑可以回复我~
weixin_慕数据1225228 2020-03-12 19:55:47

我看的时候也疑惑了, 还好找到了解答, 非常感谢

0 回复 有任何疑惑可以回复我~
慕粉1754206542 2019-03-02 12:56:33

也解决了我的疑问。最重要的是理解numpy向量可通过布尔值进行索引。thx

0 回复 有任何疑惑可以回复我~
慕姐813587 2018-03-10 15:52:52

明白了。感谢。

0 回复 有任何疑惑可以回复我~
奔跑的小女子 2018-01-06 19:24:30

非常感谢 ,我之前也有这样的疑惑,已解决 

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信