相关疑难解决方法(0)

将2d阵列切成较小的2d阵列

有没有办法将ndy中的2d数组切成较小的2d数组?

[[1,2,3,4],   ->    [[1,2] [3,4]   
 [5,6,7,8]]          [5,6] [7,8]]
Run Code Online (Sandbox Code Playgroud)

所以我基本上想要将2x4阵列减少为2个2x2阵列.寻找用于图像的通用解决方案.

python numpy

45
推荐指数
3
解决办法
3万
查看次数

在Python中实现MATLAB的im2col"滑动"

问:如何加快速度?

下面是我对Matlab的im2col '滑动'的实现,以及返回每个第n列的附加功能.该函数采用图像(或任意2个暗淡的数组)并从左到右,从上到下滑动,拾取给定大小的每个重叠子图像,并返回其列为子图像的数组.

import numpy as np

def im2col_sliding(image, block_size, skip=1):

    rows, cols = image.shape
    horz_blocks = cols - block_size[1] + 1
    vert_blocks = rows - block_size[0] + 1

    output_vectors = np.zeros((block_size[0] * block_size[1], horz_blocks * vert_blocks))
    itr = 0
    for v_b in xrange(vert_blocks):
        for h_b in xrange(horz_blocks):
            output_vectors[:, itr] = image[v_b: v_b + block_size[0], h_b: h_b + block_size[1]].ravel()
            itr += 1

    return output_vectors[:, ::skip]
Run Code Online (Sandbox Code Playgroud)

例:

a = np.arange(16).reshape(4, 4)
print a
print im2col_sliding(a, (2, 2))  # return every …
Run Code Online (Sandbox Code Playgroud)

python performance numpy image-processing python-2.7

15
推荐指数
2
解决办法
8664
查看次数