gpt4 book ai didi

python - 更高性能的方法从 python 执行这种类型的插入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:18 24 4
gpt4 key购买 nike

给定两个数组 hashestable,对于 hashes 中的每个值,我想将元素的位置存储在元素值的偏移量处在数组 table 中。这是朴素的算法:

def insert_n(table,hashes):
for x in xrange(len(hashes)):
table[hashes[x]]=x

这非常慢。 Psyco 在这里帮助了一些人,但几乎没有。

Numpy 有一个解决方案:

numpy.insert(table,numpy.arange(len(hashes)),hashes)

但根据我的基准测试,对于这样一个简单的操作,这仍然非常慢。有没有可以从 python 中使用的更快的方法来执行此操作?

一些额外的示例代码:

import numpy

from time import time

table_size=2**20

hashes_size=2**19

table=numpy.zeros(table_size,dtype=numpy.uint32)

hashes=numpy.fromstring(numpy.random.bytes((hashes_size)*4),
dtype=numpy.uint32)%table_size

t0=time()

numpy.insert(table,numpy.arange(len(hashes)),hashes)

print time()-t0

最佳答案

这既快速又简单(假设表和哈希是 numpy.uint32 数组):

table[hashes] = numpy.arange(len(hashes), dtype=numpy.uint32)

你可能想用这个来比较速度:

table[hashes] = xrange(len(hashes))

顺便说一句,numpy.insert 做的事情与您发布的 for 循环不同。

关于python - 更高性能的方法从 python 执行这种类型的插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com