用标量划分ndarray - Numpy/Python

pce*_*con 11 python numpy matrix division

我只是想知道如何在不使用循环的情况下做这样的事情.

我做了一个简单的测试试图调用一个分区,就像我们使用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  
Run Code Online (Sandbox Code Playgroud)

我想这应该很简单.任何帮助,将不胜感激.

Nig*_*nel 7

我认为你想要matrix_c就地修改:

matrix_c /= (N * M)
Run Code Online (Sandbox Code Playgroud)

或者可能效果不佳:

matrix_c = matrix_c / (N * M) 
Run Code Online (Sandbox Code Playgroud)

表达式matrix_c / (N * M)不会改变matrix_c- 它会创建一个新的矩阵.


kso*_*all 6

另一个解决方案是使用 numpy.divide

matric_c = np.divide(matrix_c, N*M)
Run Code Online (Sandbox Code Playgroud)

只要确保N * M是浮点数,以防您追求精度。