python棋盘格_高效地创建0和255秒的棋盘格图案

我们将从零初始化数组开始。所以,这将是:np.zeros((heigh, width))。接下来,我们将很少有方法用这样一种交替的255s填充它。在

方法1:使用带^{}的open范围数组来模拟这些迭代器,并利用^{}-I,J = np.ogrid[:h,:w]

im[(I+J)%2==0] = 255

方法2:仔细看一下,似乎您正在将每行中的每个其他元素设置为255,从第一行的第一个元素开始,第二行的第二个元素开始,第三行的元素返回到第一个,依此类推。因此,我们也可以使用^{},而且应该非常有效-

^{pr2}$

运行时测试

方法-def func(im):

h,w = im.shape

for i in range(h):

for j in range(w):

if (i + j) % 2 == 0:

im[i, j] = 255

return im

def app1(im):

h,w = im.shape

I,J = np.ogrid[:h,:w]

im[(I+J)%2==0] = 255

return im

def app2(im):

im[::2,::2] = 255

im[1::2,1::2] = 255

return im

验证-In [74]: im = np.random.randint(0,255,(1000,1000))

In [75]: im1 = im.copy()

...: im2 = im.copy()

...: im3 = im.copy()

...:

In [76]: func(im1)

...: app1(im2)

...: app2(im3)

...:

Out[76]:

array([[255, 133, 255, ..., 14, 255, 41],

[235, 255, 191, ..., 255, 40, 255],

[255, 151, 255, ..., 51, 255, 18],

...,

[ 50, 255, 177, ..., 255, 193, 255],

[255, 245, 255, ..., 114, 255, 27],

[223, 255, 148, ..., 255, 200, 255]])

In [77]: print np.allclose(im1,im2)

...: print np.allclose(im1,im3)

...:

True

True

时间安排-In [78]: %timeit func(im)

10 loops, best of 3: 106 ms per loop

In [79]: %timeit app1(im)

100 loops, best of 3: 14 ms per loop

In [80]: %timeit app2(im)

1000 loops, best of 3: 415 µs per loop

In [82]: 106/0.415 # Speedup with approach #2 over original one

Out[82]: 255.42168674698797

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值