2016-06-28 17 views
2

グリッドは正常に作成されましたが、グリッドをチェッカーボードパターンに変換しようとしています。これは、好ましくはfloodfillコマンドの変形を使用しています。

プログラムがどの矩形が偶数であり、どれが奇数であるかを認識させるにはどうすればよいですか?

現在IDEはm[i][j]= 1に設定されており、m[i][j]= 0は赤色に設定されていますので、色を定義する必要はありません。ありがとうございました。グリッドをpythonのチェッカーボードパターンに変換しますか?

from pylab import * 
from numpy import * 
from math import * 

m=zeros((100,100)) 
for i in range(100): 
    for j in range(100): 
     if (math.floor(i) % 10) != 0: 
      if (math.floor(j) % 10) != 0: 
       m[i][j]= 1 
      else: 
       m[i][j]= 0 

imshow(m) 
show() 

コード出力:

コードは、私がこれまで持っているあなたは、2つの指数の合計(行と列)を確認することができます

enter image description here

答えて

1

を第1の色でそれを色付けそれが奇妙であれば2番目です。以下のような何か:

for i in range(nrows): 
    for j in range(ncols): 
     m[i][j] = 0 if (i+j)%2 else 1 
+0

美しく簡単です。 –

0

剰余演算を使用します

m[i][j] = (i+j) % 2 
0

を、私は、リニアアレイを作成しておき第2の値を記入し、再構築します。あなたのケース(列の量さえも)で は、一つの列を付加し、整形後にそれを取り除く:

import numpy as np 

rows = 100 
cols = 100 + 1 # product of rows*cols must be odd, we fix it later 
m = np.zeros((rows*cols, 1)) # create array 
m[::2] = 1 # fill every second 
m = np.reshape(m, (rows, cols)) # reshape array to matrix 
m = m[:, :-1] # cut additional column 
0

あなたはあなたにそれが同等にするためにscipy's imresizeでそれをリサイズし、その後、numpyのでチェッカーボードスタイルの配列を作成することができます所望のキャンバス領域。

したがって、手順は次のようになります。

1)10 x 10サイズチェッカーボードパターンに対応する形状(10,10)のnumpyのアレイを作成します。これを行うには、onesと交互の行と列をzerosアレイで開始し、充填:

from scipy.misc import imresize # Importing required function 

out = imresize(arr,10*np.array(arr.shape),interp='nearest')/255 

出力:

arr = np.zeros((10,10),dtype=int) 
arr[::2,::2] = 1 
arr[1::2,1::2] = 1 

2)配列10xのサイズを変更は(100,100)画素サイズの出力画像を有すること

enter image description here

関連する問題