如何使用numpy从二元组的三元组中的三元组的第一个元素中提取数组

时间:2014-04-23 23:33:20

标签: python arrays numpy

我有一个形状为(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),我无法弄清楚我需要做什么。

1 个答案:

答案 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)