请稍等 ...
×

采纳答案成功!

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

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

我运行了如下代码

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

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

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

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2021-08-09 18:25:28

如果你想取出第二行满足某个条件的元素,首先要拿到第二行,在第二行中传入相应的 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 回复 有任何疑惑可以回复我~
  • 提问者 慕九州7074565 #1
    那我有两个疑问,这与课上的语言形式好像不太一样,第二,我写的这个实际运行的是什么呢
    回复 有任何疑惑可以回复我~ 2021-08-11 11:24:44
  • liuyubobobo 回复 提问者 慕九州7074565 #2
    我回复的“你的写法是...” 一段在描述你的写法实际在运行什么。
    
    和课上的语言形式好像不太一样具体是指什么?请具体指出你认为和课上的那一段语言的写法你觉得应该是一样的,实际结果却不一样?
    回复 有任何疑惑可以回复我~ 2021-08-11 11:33:43
  • 提问者 慕九州7074565 回复 liuyubobobo #3
    这个视频中写到X[X[:,3] % 3 == 0,:]返回的是一横行中最后一个元素是三的倍数的行,但是按照同样的写法取每个列中含有3的倍数的列不太一样,就不能直接变成X[X[3:,] % 3 == 0,:]
    回复 有任何疑惑可以回复我~ 2021-08-13 14:00:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信