我想将整数数组转换为整数。 例如,如果数组包含[2,3,1,6],我想得到2316。
答案 0 :(得分:1)
integer = int("".join([str(x) for x in arr]))
integer = np.sum(np.array([(10**exp) * elem for (elem, exp) in zip(arr, reversed(range(len(arr))))]))
我刚刚进行了测量,对于30位数字的随机数,使用字符串转换,连接和int转换的解决方案快大约5倍。
此背景信息的其余部分仅用于娱乐。 :-)
int()
这么快... 使用int()
的速度非常快,因为 cpython sourcecode中的函数对应于Modules/main.c
的{{1}},后者使用C函数{ {1}}。
因此,基本上,如果您可以在C中为python构建类似于以下内容的模块,则可以变得更快:
pymain_str_to_int()
要更深入地研究,必须弄清楚python如何处理大整数,即大于strtol
的值并集成C-Module,以便可以对所有类型的python int进行处理。