Loading

pyplot图像选择

plt.plot(X[y==0, 0], X[y==0,1], "bs")
plt.plot(X[y==1, 0], X[y==1, 1], "g^")

X[y0, 0]中的y0是个什么东东,为什么可以占据X的第一个位置?

首先我们看一下X是个什么?

from sklearn import datasets
iris = datasets.load_iris()

X = iris["data"][:, (2, 3)] # petal length, petal width
y = (iris["target"] == 2).astype(np.int)
print(X)

Output:

[[1.4 0.2]
[1.4 0.2]
...
[5.1 1.8]]

  X是一个数组,数组的元素是一个二元组。在解释X[y0, 0]之前,首先要明白X[:,:]左面:代表的是行范围,右边“:”代表的是列范围,如果是冒号则代表全部,否则就像代码中第四行那样,指定一个范围;那么无论是“:”,还是指定一个范围(类似于(2,3)),其实本质都是会被翻译成一个true/false的一维一元数组,每个元素都是代表数组对应位置的元素是否要出现。
  比如,y
0,print之后其实是[True True False ...],那么X[y0, 0],就X的前三个元素而言,分别代表返回(包含),返回(包含),不返回(不包含);与之类似对于“iris["data"][:, (2, 3)]”这个写法,左边的那个":"代表的行是[True,True, ... ,True],全是true;
  那么X[y
0, 0]中,第二个0代表什么意思呢?y1解决了行中那些返回(那些为true的返回),右边的那个数字代表就是返回那一列,0,代表返回的是第一列,就是上面那个1,4,1.4...5.1;与之类似对于“iris["data"][:, (2, 3)]”这个写法,代表列是要返回第三列和第四列。
  这里看到在python里面行列的处理模式是不一样的,行的取舍是通过一个True/ False数组来实现的,列的取舍确实通过指定了那一列;这个其实从矩阵的角度能够更好的理解。
Python的X[y
1, 0]

原文:https://www.cnblogs.com/xiashiwendao/p/9751397.html

posted @ 2021-05-11 23:29  橘猫非猫gkd  阅读(49)  评论(0)    收藏  举报