优化numpy数组中的元素修改操作

时间:2018-10-06 04:34:20

标签: python python-3.x numpy

因此,我的代码执行了非常基本的图像处理形式,并将字符串存储到图像中。

它主要是通过将图像转换为numpy数组(x * y * 3),然后首先使每个数字元素为奇数来实现的。

因此,数组现在就像: Validator.required

现在我要做的是将要存储的文本转换为二进制数据,并根据需要将数组尽可能多地修改为具有奇校验的元素,以表示0甚至是1。

现在我只是用一个简单的程序将其读回。

代码如下:

Validator.required

我的问题是我无法优化代码的上循环,因为它需要大约16秒钟才能完成(使用800x600x3图片矩阵)。另外,与上端相比,我的下端循环超级快。

有没有办法使用一些Numpy魔术来优化我的上循环?

1 个答案:

答案 0 :(得分:1)

您可以使用bitwise arithmetic。使所有像素为奇数可以在一行中完成:

arr |= 1

嵌入您的位字符串:

arr.ravel()[:len(long_array)] += np.array(long_array, arr.dtype)

顺便说一句,由于溢出,添加一个会造成明显的像素变化。例如,鲜红色(255,1,1)将变为黑色(0,2,2)。您可以通过减一来避免这种情况。

相关问题