Python 在ndarray中获取一维切片

Python 在ndarray中获取一维切片,python,numpy,scipy,multidimensional-array,Python,Numpy,Scipy,Multidimensional Array,我有一系列每帧每像素存储[x,y,z,r,g,b]的图像,所以整个图像形成了一个20*480*640*6的阵列。我想把r,b,g切掉,这样我就可以显示一个规则的图像。我是numpy的新手,到目前为止我尝试过的一切都没有奏效。 我认为应该是这样的: rgb_frames = frames[:][:][:][3:] 或 但是这两种方法都不起作用。帧.shape返回什么帧[:,:,:,3:]如果它具有形状(20,480,640,6)@DSM,则应该可以工作这是我发现有点困惑的一部分帧。形状给出(20

我有一系列每帧每像素存储[x,y,z,r,g,b]的图像,所以整个图像形成了一个20*480*640*6的阵列。我想把r,b,g切掉,这样我就可以显示一个规则的图像。我是numpy的新手,到目前为止我尝试过的一切都没有奏效。 我认为应该是这样的:

rgb_frames = frames[:][:][:][3:]


但是这两种方法都不起作用。

帧.shape返回什么<代码>帧[:,:,:,3:]如果它具有形状
(20,480,640,6)
@DSM,则应该可以工作这是我发现有点困惑的一部分<代码>帧。形状给出(20,)但<代码>帧[0]。形状给出(480,640,6)。它是如何决定从何处获取此维度的?看起来您的
frames
不是您认为的
4d
数组,而是
1d
数组,每个元素都是
3d
数组。添加一行
frames=np.asanyarray(frames)
,然后事情就应该开始了。@CT Zhu-它怎么知道这两者的区别?如果使用scipy.io.loadmat('datafile.m')会产生差异,那么它是从matlab.m数据文件中引入的,它以dict的形式导入,然后我通过在.m文件中调用的变量名从dict中获取它。@CTZhu不幸的是,我看不到这一点。阵列前后的形状相同。
rgb_frames = frames[:,:,:,3:] (gives too many indices error)