如何将numpy整数数组转换为整数

时间:2018-07-20 15:43:08

标签: arrays python-3.x

我想将整数数组转换为整数。 例如,如果数组包含[2,3,1,6],我想得到2316。

1 个答案:

答案 0 :(得分:1)

解决方案1(更快)

integer = int("".join([str(x) for x in arr]))

解决方案2(较慢)

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进行处理。