0
私は初心者であり、少しでも行列演算をしようとしていましたが、ある時点で固まってしまいました。 私は224x224の整数の行列を持っており、行列の8x8のパッチにわたって関数を個別に適用する必要があります。 (28パッチ、各8x8) どうすればいいですか?ここでPythonでの行列操作
私は初心者であり、少しでも行列演算をしようとしていましたが、ある時点で固まってしまいました。 私は224x224の整数の行列を持っており、行列の8x8のパッチにわたって関数を個別に適用する必要があります。 (28パッチ、各8x8) どうすればいいですか?ここでPythonでの行列操作
は一つの方法です:
# 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)
ですから、これはマトリックスimplementionsのすべての種類のと同じに見えると思いますか? Pythonにはネイティブマトリックスはありません。 – sascha
これは整数行列です。編集されました。 –
これは重要なパラメータのうちの最小のものです。ちょうどあなたのストライドサイズを計算し、ネストされたforループを行います。最適化された実装では、skimage skimageの '' view_as_blocks'''(numpy-arrayベース)をチェックアウトします。 – sascha