我只是想知道如何在不使用循环的情况下做这样的事情。
我做了一个简单的测试试图调用一个分区,就像我们使用numpy.array一样,但我得到了相同的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
我想这应该很简单。 任何帮助将不胜感激。
答案 0 :(得分:5)
我认为你想要就地修改matrix_c
:
matrix_c /= (N * M)
或者效果可能不太好:
matrix_c = matrix_c / (N * M)
表达式matrix_c / (N * M)
不会更改matrix_c
- 它会创建一个新矩阵。
答案 1 :(得分:4)
另一种解决方案是使用numpy.divide
matric_c = np.divide(matrix_c, N*M)
如果您正在寻找精确度,请确保N * M是浮点数。