python如何对数组转换类型_python – numpy:如何快速转换数组类型

当您使用imgarray = imgarray.astype(‘B’)时,您将获得一个数组的副本,转换为指定的类型.这需要额外的内存分配,即使您立即将imgarray翻转为指向新分配的数组.

如果您使用imgarray.view(‘uint8’),那么您将获得该数组的视图.这使用相同的数据,除了它被解释为uint8而不是imgarray.dtype.

(np.dot返回一个uint32数组,所以在np.dot之后,imgarray的类型是uint32.)

然而,使用视图的问题是,32位整数被视为4个8位整数,我们只关心最后8位的值.所以我们需要跳到第4个8位整数.我们可以用切片做到这一点:

imgarray.view( ‘UINT8’)[:,:4]

IPython的%timeit命令显示了以下方式可以大大加快事情的进行:

In [37]: %timeit imgarray2 = imgarray.astype('B')

10000 loops, best of 3: 107 us per loop

In [39]: %timeit imgarray3 = imgarray.view('B')[:,::4]

100000 loops, best of 3: 3.64 us per loop

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值