代码之家  ›  专栏  ›  技术社区  ›  pceccon

用标量除ndarray-Numpy/Python

  •  17
  • pceccon  · 技术社区  · 10 年前

    我只是想知道,如果不使用循环,我怎么能做到这一点。

    我做了一个简单的测试,试图像使用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  
    

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

    2 回复  |  直到 10 年前
        1
  •  16
  •   Nigel Tufnel    10 年前

    我认为你想修改 matrix_c 到位:

    matrix_c /= (N * M)
    

    或者可能不太有效:

    matrix_c = matrix_c / (N * M) 
    

    表示 matrix_c / (N * M) 不会改变 矩阵x_c -它创建了一个新的矩阵。

        2
  •  13
  •   Kenan    7 年前

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

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

    只要确保N*M是一个浮点数,以防您需要精度。