Je me demande simplement comment pourrais-je faire une telle chose sans utiliser de boucles.
J'ai fait un test simple en essayant d'appeler une division comme nous le faisons avec un numpy.array, mais j'ai obtenu le même 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
Je suppose que cela devrait être assez simple. Toute aide serait appréciée.
Je pense que vous souhaitez modifier matrix_c
Sur place:
matrix_c /= (N * M)
Ou probablement moins efficace:
matrix_c = matrix_c / (N * M)
L'expression matrix_c / (N * M)
ne change pas matrix_c
- elle crée une nouvelle matrice.
Une autre solution serait d'utiliser numpy.divide
matric_c = np.divide(matrix_c, N*M)
Assurez-vous simplement que N * M est un flotteur au cas où vous recherchez la précision.