Я ищу эффективный способ выполнения операций надматрицы над большей матрицей, не прибегая к циклам.Операции с подматрицей Numpy
Я в настоящее время делают операцию (для окна 3х3):
newMatrix = numpy.zeros([numRows, numCols])
for i in range(1, numRows-1):
for j in range(1, numCols-1):
sub = matrix[i-1:i+2, j-1:j+2]
newMatrix[i][j] = ... #do things with sub matrix
Это значительно медленнее, чем обычные операции с Numpy матрицами. Есть ли что-нибудь, что может предложить numpy, чтобы решить это, или это слишком много надеется?
Edit: Конкретный пример
xWeight = numpy.array([[-1./8, 0, 1./8], [-2./8, 0, 2./8], [-1./8, 0, 1./8]])
yWeight = numpy.array([[1./8, 2./8, 1./8], [0, 0, 0], [-1./8, -2./8, -1./8]])
Внутри цикла:
dz_dx = numpy.sum(xWeight * sub)
dz_dy = numpy.sum(yWeight * sub)
Вы пытаетесь выполнить обработку изображений с помощью numpy? – Jiminion
Является ли это 'matrix' на строке 4, которая должна быть' newMatrix'? – Brionius
Что именно вы делаете в «делать вещи с подматрицей»? Если вы не укажете, что вы делаете, мы не сможем вам векторизовать ваш код. –