web-dev-qa-db-ja.com

ndarrayをスカラーで除算-Numpy / Python

ループを使用せずにこのようなことを行うにはどうすればよいのだろうと思っています。

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  

これはかなり単純なはずです。任意の助けいただければ幸いです。

14
pceccon

_matrix_c_をインプレースで変更したいと思います。

_matrix_c /= (N * M)
_

またはおそらくあまり効果的ではありません:

_matrix_c = matrix_c / (N * M) 
_

matrix_c / (N * M)は_matrix_c_を変更しません-新しい行列を作成します。

8
Nigel Tufnel

別の解決策は、numpy.divide

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

正確さを求める場合に備えて、N * Mが浮動小数点であることを確認してください。

8
Kenan