Andrew Raleigh
Andrew Raleigh

Reputation: 321

Can you use numpy to calculate the magnitude of difference?

Say I have two matrices, A and B.

I want to calculate the magnitude of difference between the two matrices. That is, without using iteration.

Here's what I have so far:

def mymagn(A, B):
    i = 0
    j = 0
    x = np.shape(A)
    y = np.shape(B)
    while i < x[1]:
        while j < y[1]:
            np.sum((A[i][j] - B[i][j]) * (A[i][j] - B[i][j]))
            j += 1
        i += 1

As I understand it, generally the value should be small with two similar matrices but I'm not getting that, can anyone help? Is there any way to get rid of the need to iterate?

Upvotes: 0

Views: 1696

Answers (1)

randomir
randomir

Reputation: 18697

This should do it:

def mymagn(A, B):
    return np.sum((B - A) ** 2)

For arrays/matrices of the same size, addition/subtraction are element-wise (like in MATLAB). Exponentiation with scalar exponent is also element-wise. And np.sum will by default sum all elements (along all axes).

Upvotes: 1

Related Questions