【发布时间】:2011-01-11 06:52:26
【问题描述】:
我正在使用 numpy 将像素数组初始化为灰色棋盘格(“无像素”或透明的经典表示)。似乎应该有一种奇妙的方法来使用 numpy 惊人的数组分配/切片/切块操作,但这是我想出的最好的方法:
w, h = 600, 800
sq = 15 # width of each checker-square
self.pix = numpy.zeros((w, h, 3), dtype=numpy.uint8)
# Make a checkerboard
row = [[(0x99,0x99,0x99),(0xAA,0xAA,0xAA)][(i//sq)%2] for i in range(w)]
self.pix[[i for i in range(h) if (i//sq)%2 == 0]] = row
row = [[(0xAA,0xAA,0xAA),(0x99,0x99,0x99)][(i//sq)%2] for i in range(w)]
self.pix[[i for i in range(h) if (i//sq)%2 == 1]] = row
它有效,但我希望有更简单的东西。
【问题讨论】:
-
我想你的意思是
numpy.zeros((h, w, 3), ...)(翻转w和h)。 -
我找到了这个解决方案:
np.tile( np.array([[0,1],[1,0]]), (h, w))