我有一个形状为(480, 640, 3)
的数组,我想使用numpy创建一个由三元组中所有第一个元素组成的数组。我试过了
newArray = array[np.arange(array.shape[0]),np.arange(array.shape[1]),0]
但是这会返回:
cannot be broadcast to a single shape
我理解为什么,如果确实有效,那就不是我想要的了。我想最终得到一个形状为(480, 640)
的数组,该命令会给我一个1d数组。
那么,我如何得到我想要的东西?我一直在浏览关于numpy的文档和教程,但是有很多我不知道的术语(我今天刚开始使用numpy),我无法弄清楚我需要做什么。
答案 0 :(得分:3)
听起来你想沿着深度轴拍摄切片:
In [8]: a = np.ones((480,640,3))
In [9]: a[:,:,0]
Out[9]:
array([[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.],
...,
[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.]])
In [10]: a[:,:,0].shape
Out[10]: (480, 640)