Сопоставление двух 2d массивов кортежей (x, y, z) разных размеров и поиск индексов совпадений в python - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь сравнить два двухмерных массива значений (r, g, b), которые имеют разные размеры [2048] [4096] и [398] [40]. Я хочу найти равные значения кортежей среди них, и каждый раз, когда я его нахожу, я хочу добавить определенное значение в другой массив, который является [2048] [4096]. Код ниже работает, но очень медленно для объема данных, которые мы имеем.

from PIL import Image
import numpy as np

map = Image.open('ozone.png')
scale = Image.open('scale.png')
rgb_map = map.convert('RGB')
rgb_scale = scale.convert('RGB')

pixeltoDOB = 1.0050251256
scaleVals = []
mapVals = []


for x in range(398):
    scaleVals.append([])
    for y in range(40):
        r, g, b = rgb_scale.getpixel((x, y))
        scaleVals[x].append((r,g,b))

for y in range(2048):
    mapVals.append([])
    for x in range(4096):
        r, g, b = rgb_map.getpixel((x,y))
        mapVals[y].append((r,g,b))


ozoneVals = np.zeros((2048,4096))

for i in range(128):
    for j in range(256):
        for k in range(398):
            for l in range(40):
                print(i,j,k,l)
                if (mapVals[i][j]) == (scaleVals[k][l]):
                    ozoneVals[i][j] = pixeltoDOB * k

print(ozoneVals[2][128]) ##just to see if it works
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...