17

I'm just wondering how could I do such thing without using loops.

I made a simple test trying to call a division as we do with a numpy.array, but I got the same ndarray.

N = 2
M = 3

matrix_a = np.array([[15., 27., 360.],
            [180., 265., 79.]])
matrix_b = np.array([[.5, 1., .3], 
            [.25, .7, .4]])

matrix_c = np.zeros((N, M), float)

n_size = 360./N
m_size = 1./M

for i in range(N):
    for j in range(M):
        n = int(matrix_a[i][j] / n_size) % N
        m = int(matrix_b[i][j] / m_size) % M
        matrix_c[n][m] += 1 

matrix_c / (N * M)
print matrix_c  

I guess this should be pretty simple. Any help would be appreciated.

2 Answers 2

18

I think that you want to modify matrix_c in-place:

matrix_c /= (N * M)

Or probably less effective:

matrix_c = matrix_c / (N * M) 

Expression matrix_c / (N * M) doesn't change matrix_c - it creates a new matrix.

Sign up to request clarification or add additional context in comments.

Comments

13

Another solution would be to use numpy.divide

matric_c = np.divide(matrix_c, N*M)

Just make sure N*M is a float in case your looking for precision.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.