我已经成功创建了一个网格,但现在我正在尝试将网格转换为棋盘图案,最好使用floodfill命令的变体。
如何确保程序识别哪个方格是偶数哪个是奇数?
目前IDE设置为m[i][j]= 1
给出蓝色,而m[i][j]= 0
给出红色,我很乐意保留,因此我不需要定义颜色。谢谢。
我到目前为止的代码:
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()
代码输出:
答案 0 :(得分:1)
您可以检查两个索引(行和列)的总和,如果它是奇数,则用第一种颜色着色,否则为第二种颜色。类似的东西:
for i in range(nrows):
for j in range(ncols):
m[i][j] = 0 if (i+j)%2 else 1
答案 1 :(得分:0)
使用模数运算:
m[i][j] = (i+j) % 2
答案 2 :(得分:0)
我会创建一个线性数组,填充每秒值并重新整形。 在您的情况下(甚至是列数),在重新整形后添加一列并删除它:
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
答案 3 :(得分:0)
您可以使用NumPy创建棋盘格样式数组,然后使用scipy's imresize
调整其大小,使其等于所需的画布区域。
因此,步骤将是:
1)创建一个与(10,10)
大小的棋盘图案对应的形状10 x 10
的NumPy数组。为此,请从zeros
数组开始,并使用ones
填充备用行和列:
arr = np.zeros((10,10),dtype=int)
arr[::2,::2] = 1
arr[1::2,1::2] = 1
2)调整数组10x
的大小,使其具有(100,100)
像素大小的输出图像:
from scipy.misc import imresize # Importing required function
out = imresize(arr,10*np.array(arr.shape),interp='nearest')/255
输出:
答案 4 :(得分:0)
只需对代码进行最少的修改,就会看起来像这样:
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
if (int(i / 10) + int(j / 10)) % 2: # the only two extra lines.
m[i][j] = 0 #
imshow(m)
show()
或者只是这个(假设你真的需要100x100)来摆脱“边界线”:
m=zeros((100,100))
for i in range(100):
for j in range(100):
m[i][j] = (int(i / 10) + int(j / 10)) % 2
干杯。
答案 5 :(得分:0)
import numpy as np
def make_checkerboard(n_rows, n_columns, square_size):
n_rows_, n_columns_ = int(n_rows/square_size + 1), int(n_columns/square_size + 1)
rows_grid, columns_grid = np.meshgrid(range(n_rows_), range(n_columns_), indexing='ij')
high_res_checkerboard = np.mod(rows_grid, 2) + np.mod(columns_grid, 2) == 1
square = np.ones((square_size,square_size))
checkerboard = np.kron(high_res_checkerboard, square)[:n_rows,:n_columns]
return checkerboard
square_size = 5
n_rows = 14
n_columns = 67
checkerboard = make_checkerboard(n_rows, n_columns, square_size)