2017-03-22 27 views
0

私は初心者であり、少しでも行列演算をしようとしていましたが、ある時点で固まってしまいました。 私は224x224の整数の行列を持っており、行列の8x8のパッチにわたって関数を個別に適用する必要があります。 (28パッチ、各8x8) どうすればいいですか?ここでPythonでの行列操作

+0

ですから、これはマトリックスimplementionsのすべての種類のと同じに見えると思いますか? Pythonにはネイティブマトリックスはありません。 – sascha

+0

これは整数行列です。編集されました。 –

+1

これは重要なパラメータのうちの最小のものです。ちょうどあなたのストライドサイズを計算し、ネストされたforループを行います。最適化された実装では、skimage skimageの '' view_as_blocks'''(numpy-arrayベース)をチェックアウトします。 – sascha

答えて

0

は一つの方法です:

# Just make up a 224x224 matrix 
Matrix = [ [row*col for col in range(224)] for row in range(224)] 

def f(m, r, c): 
    for row in range(r, r+8): 
     for col in range(c, c+8): 
      m[row][col] += 1 # whatever operation goes here 

def apply_func_to_matrix_by_8(m, f): 
    nr = len(m) 
    nc = len(m[0]) 

    for row in range(0, nr, 8): 
     for col in range(0, nc, 8): 
      f(m, row, col) 


apply_func_to_matrix_by_8(Matrix, f)