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]。
继续加油!:)
052021-08-14
相似问题