Numpy:根据索引和参数应用函数

Numpy: apply function based on index and parameters

提问人:Rararat 提问时间:11/7/2023 更新时间:11/7/2023 访问量:35

问:

我有一个 NxMx4 3D 数组,表示 RGBA 中的图像,以及一个二进制字符串,表示一些文本。我想获取具有 x,y 坐标的向量都可以被 2 整除(即 ),然后取每个向量的最后一个元素,如果相应的字节是 1,则将其减少为 1,或者如果相应的字节是 0,则不执行任何操作。[0,0],[0,2],...,[2,0],[2,2],...

例如,如果字符串是 ,则使用第一个向量,不要执行任何操作,将第二个和第三个向量减少 1,然后对其余的不执行任何操作。如果我的向量多于字符串中的元素,这并不重要。"01100"

我已经设法做到了,使用一种循环:

originalRows, originalColumns,_ = dataToEncrypt.shape



x,y = startx,starty
for char in binnaryMssg:
    if x >= originalColumns:
        x = startx
        y += Step
        if y >= originalRows:
                x = startx + 1
                y = starty + 1

    dataToEncrypt[y,x,-1] = dataToEncrypt[y,x,-1] - int(char)
    x += Step

这里,,,是函数的所有参数。startxstartyStep

问题是这有点慢,对于 0.38x918 像素的图像中包含 876 个字符的文本,大约 575 秒。

有没有办法加快速度?我尝试使用类似的东西跳过 0。

for char in binnaryMssg:
    if (char == "0"):
        x+= Step
        continue

但它只是破坏了一切,不让我恢复原始消息。

python 数组 numpy

评论


答: 暂无答案