Python:从3D数组中提取2D数组

时间:2016-08-12 12:55:32

标签: python arrays opencv numpy

我有一个3D numpy数组(1L,420L,580L),第二和第三维是我想用openCV显示的灰度图像。如何从3D阵列中拉出2D阵列?

我创建了一个简短的例行程序来做这件事,但我打赌有更好的方法。

# helper function to remove 1st dimension
def pull_image(in_array):

    rows = in_array.shape[1]    # vertical
    cols = in_array.shape[2]    # horizontal

    out_array = np.zeros((rows, cols), np.uint8)    # create new array to hold image data

    for r in xrange(rows):
        for c in xrange(cols):            
            out_array[r, c] = in_array[:, r, c]
    return out_array

1 个答案:

答案 0 :(得分:2)

如果你总是只有第一个维度== 1,那么你可以简单地重塑数组......

if in_array.shape[0] == 1:
    return in_array.reshape(in_array.shape[1:])

否则,你可以使用numpy的高级列表切片......

else:
    return in_array[0,:,:]