python数组获取到最后一个值_python - 在numpy数组中,高效地提取每个元素的最后两位数字_python_酷徒编程知识库...

这篇博客探讨了如何通过不同的Python方法优化获取数组元素最后两位的效率。从原始解决方案的5200毫秒,到使用位运算和numpy数组的优化实现,时间降低到了60毫秒。文章对比了各种方法的性能,并提供了最佳实践。
摘要由CSDN通过智能技术生成

快速基准测试

安装程序import numpy as np

test_arr = np.random.randint(0, 10000000, 10000000)

1.原始解决方案def last_two_bits(arr_in):

return [bin(num)[-2:].replace('b','0') for num in arr_in]

时间:~5200 msbits_map = ['00','01','10','11']

def last_two_bits_nv(arr_in):

return bits_map[arr_in % 4]

last_two_bits = np.vectorize(last_two_bits_nv)

时间:~2600 ms

3.我对@aminrd的解决方案进行了调整bits_map = np.array(['00', '01', '10', '11'])

def last_two_bits(arr_in):

return bits_map[arr_in % 4]

时间:~170 msdef last_two_bits(arr_in):

return (((arr_in & 1) << 32) + ((arr_in & 2) >> 1) + ord('0') * 0x100000001).view('U2')

时间:~100 msbits_map = np.array(['00', '01', '10', '11'])

def last_two_bits(arr_in):

return bits_map[arr_in & 3]

时间:~60 msdef last_two_bits(arr_in):

output = np.empty((arr_in.size, 2), dtype=np.uint8)

np.bitwise_and(arr_in >> 1, 1, out=output[:, 0], casting='unsafe')

np.bitwise_and(arr_in, 1, out=output[:, 1], casting='unsafe')

output += 48

return output.view(dtype='S2').ravel()

时间:~60 ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值