X[X[1,:] % 3 == 0,:]的值为什么和预想的不一样

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

慕九州7074565

2021-08-09

我运行了如下代码

x = np.arange(16)
X=x.reshape(4,-1)
X 是一个0-15的矩阵,然后 我继续运行代码

X[X[1,:] % 3 == 0,:]

得到的是[8,9,10,11]。按理说,这个运算计算的应该是第二行中被三整除的数字所在还给取出来么?

写回答

1回答

liuyubobobo

2021-08-09

如果你想取出第二行满足某个条件的元素,首先要拿到第二行,在第二行中传入相应的 Fancy Index


第二行是 X[1,:],Fancy Index 是:X[1,:] % 3 == 0。所以应该写成:

X[1,:][X[1,:] % 3 == 0]


你的写法是在二维矩阵中取值。因为 X[1,:] % 3 == 0 是 [False, False, True, False],所以相当于是要在整个二维矩阵 X 中取出索引 2 的元素(索引 2 为 True),二维矩阵中每一个元素是一个向量,索引为 2 的向量是 [8, 9, 10, 11]。


继续加油!:)

0
5
慕九州7074565
3-10, 19:16
2021-08-14
共5条回复

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

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

5839 学习 · 2437 问题

查看课程