有关切片索引和用整数数组索引的问题

来源:3-10 Numpy中的比较和Fancy Indexing

江景又妍和

2020-07-13

图片描述
bobo老师好,老师3-10这节课第五分钟的时候,这里我有一点不太明白
第一个例子是按照两个数组,下标一一对应,取出需要的三个点,而第二个就取出相应的矩阵了,而不是分别将点取出来
我不能理解的是,X[:2,col]为什么不可以理解为 X[ [0,1], [1,2,3] ]这样的呢?这样的话x y就不对应了,就没法按照下标一一对应这样来索引了。

写回答

1回答

liuyubobobo

2020-07-13

如果我要没理解错的话,你的问题是,凭什么 X[[0, 1], [1, 2, 3]] 的输出和 X[:2, [1, 2, 3]] 的输出不一样。(前者会报错)。


简单来说,是因为 numpy 就是这样定义的。


对于每一种参数,numpy 只能定义一种语义。所以,numpy 将 X[一个数组, 另一个数组] 的参数定义成了根据两个数组分别取出 x 和 y 的索引(要求两个数组必须一致),然后在 X 矩阵中取值。而将切片定义成了取出相应的所有行(或者列)。


numpy 根据用户传来的参数的不同,来决定采用哪种逻辑去取值。


继续加油!:)

0
3
liuyubobobo
回复
shurima阿慕慕
np.array([x[[0, 1, 3]] for x in X[[0, 1, 3]]])
2021-01-07
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程