提问人:Rararat 提问时间:11/7/2023 更新时间:11/7/2023 访问量:35
Numpy:根据索引和参数应用函数
Numpy: apply function based on index and parameters
问:
我有一个 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
这里,,,是函数的所有参数。startx
starty
Step
问题是这有点慢,对于 0.38x918 像素的图像中包含 876 个字符的文本,大约 575 秒。
有没有办法加快速度?我尝试使用类似的东西跳过 0。
for char in binnaryMssg:
if (char == "0"):
x+= Step
continue
但它只是破坏了一切,不让我恢复原始消息。
答: 暂无答案
评论