У меня есть две матрицы. Оба заполнены нулями и единицами. Один из них большой (3000 x 2000 элементов), а другой - меньшие (20 x 20) элементов. Я делаю что-то наподобие:Ускорение вычислений с матрицами numpy
newMatrix = (size of bigMatrix), filled with zeros
l = (a constant)
for y in xrange(0, len(bigMatrix[0])):
for x in xrange(0, len(bigMatrix)):
for b in xrange(0, len(smallMatrix[0])):
for a in xrange(0, len(smallMatrix)):
if (bigMatrix[x, y] == smallMatrix[x + a - l, y + b - l]):
newMatrix[x, y] = 1
Который является болезненно медленным. Я что-то делаю неправильно? Есть ли умный способ сделать эту работу быстрее?
Редактирование: В основном я для каждой (x, y) в большой матрице, проверяя все пиксели как большой матрицы, так и малой матрицы вокруг (x, y), чтобы увидеть, являются ли они 1. Если они 1, то я устанавливаю это значение на newMatrix. Я делаю своеобразное обнаружение столкновений.
Вы на самом деле есть это выражение: smallMatrix [х + а - л, y + b - l]) Вы используете «большие матричные индексы» x, y для обращения к элементу на малой матрице - это правильно? – jsbueno
Это правильно. –