1
我试图从一个3d numpy数组中提取值。此刻,我可以执行以下操作:用二维数组对三维numpy数组进行索引
newmesh.shape
(40,40,40)
newmesh[2,5,6]
6
但是,如果我尝试使用数组索引它,并不如预期的结果;
newmesh[np.array([2,5,6])].shape
(3, 42, 42)
我试过使用np.take,但它产生以下;
np.take(newmesh,np.array([2,5,6]))
[-1 -1 -1]
任何想法为什么会发生这种情况?我的目标是输入一个(n,3)数组,其中每行对应于newmesh的值,即输入一个(n,3)数组将返回一个长度为n的1d数组。
由于这是非常有益的。你明白我为什么做错了吗? – Jack
@Jack没有任何逗号,在NumPy数组中,你只能用'newmesh [np.array([2,5,6])]'索引到第一个dim,它会从第一个dim选择三个elem,一切从昏暗的其余部分。所以,它本质上是:'newmesh [np.array([2,5,6]),:,:]'。 – Divakar