当我尝试以略有不同的方式访问多维数组时,会得到不同的结果,我不理解。
当我跑步时:
ells=np.array([1,2,3,4])
check=np.zeros((2,2,2,len(ells)))
print(check[:,:,:,ells<=4].shape)
print(check[0,:,:,ells<=4].shape)
我实际上可以通过使用
解决此问题ells=np.array([1,2,3,4])
check=np.zeros((2,2,2,len(ells)))
print(check[:,:,:,ells<=4].shape)
print(check[0,:,:,:][:,:,ells<=4].shape)
但是我想了解为什么第一个版本是错误的。
在第一种情况下,我希望得到形状为(2,2,2,4)和(2,2,4)的数组,但我会得到(2,2,2,4)和(4,2,2 )。
在第二种情况下,我得到了预期的答案(2,2,2,4)和(2,2,4)。
答案 0 :(得分:0)
这是混合的高级索引和基本索引的示例:
两个外部索引选择大小4,然后在其中添加两个内部切片:
check[0,:,:,ells<=4]
给出的原因是,当高级索引由切片分隔时,可能存在歧义。但是,当其中一个索引是标量时(这是一个古老的反对意见),这种歧义的情况就更弱了。
我确定有人可以找到重复的SO。