Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 性能:高效地切片和反转Numpy阵列_Python_Arrays_Performance_Numpy_Slice - Fatal编程技术网

Python 性能:高效地切片和反转Numpy阵列

Python 性能:高效地切片和反转Numpy阵列,python,arrays,performance,numpy,slice,Python,Arrays,Performance,Numpy,Slice,我想计算10种图像:左上角、右上角、左下角、右下角、中间,以及所有镜像图像。图像存储在Numpy数组blob中,形状nx通道x高度x宽度,其中N是源图像的数量 切片的左上角点存储在tls中,切片的右下角点存储在brs中。以下代码提取作物以及每个作物的水平镜像版本: m = 10 if mirror else 5 crops_shape = ((blob.shape[0] * m,) + blob.shape[1:-2] + crop_dimensions) crops = np.empty(sh

我想计算10种图像:左上角、右上角、左下角、右下角、中间,以及所有镜像图像。图像存储在Numpy数组
blob
中,形状
nx通道x高度x宽度
,其中
N
是源图像的数量

切片的左上角点存储在
tls
中,切片的右下角点存储在
brs
中。以下代码提取作物以及每个作物的水平镜像版本:

m = 10 if mirror else 5
crops_shape = ((blob.shape[0] * m,) + blob.shape[1:-2] + crop_dimensions)
crops = np.empty(shape=crops_shape, dtype=blob.dtype)

for i in range(0, blob.shape[0]):
    p = i * m
    for k, (tl, br) in enumerate(zip(tls, brs)):
        crops[p + k] = blob[i, ..., tl[0]:br[0], tl[1]:br[1]]
    if mirror:
        crops[p + 5:p + 10] = crops[p:p + 5, ..., ::-1]

return crops
例如,对于单个图像,
blob
可以具有形状(1、3、226、226)。例如,所有作物都具有相同的大小(227x227),因此在这种情况下,生成的数组
作物
将具有形状(10,3,227227)(当
镜像
为真时)


不幸的是,当
blob
float32
数组时,上述方法速度太慢(约1.5ms/image)。有没有办法加快速度?

作物的形状是否相同?你能添加一个例子吗?是的,所有作物都有相同的形状,我添加一个例子。作物的形状相同吗?你能添加一个例子吗?是的,所有作物都有相同的形状,我正在添加一个例子。