Arrays 如何将numpy整数数组转换为整数
我想将整数数组转换为整数。 例如,如果数组包含[2,3,1,6],我想得到2316。解决方案1(更快)Arrays 如何将numpy整数数组转换为整数,arrays,python-3.x,Arrays,Python 3.x,我想将整数数组转换为整数。 例如,如果数组包含[2,3,1,6],我想得到2316。解决方案1(更快) integer=int(“.”join([str(x)表示arr中的x])) 解决方案2(较慢) integer=np.sum(np.array([(10**exp)*elem表示zip中的(elem,exp)(arr,reversed(range(len(arr))))))))) 背景(深入挖掘) 我刚刚测量过,使用字符串转换、连接和int转换的解决方案在30位数的随机数上的速度大约快5倍
integer=int(“.”join([str(x)表示arr中的x]))
解决方案2(较慢)
integer=np.sum(np.array([(10**exp)*elem表示zip中的(elem,exp)(arr,reversed(range(len(arr)))))))))
背景(深入挖掘)
我刚刚测量过,使用字符串转换、连接和int转换的解决方案在30位数的随机数上的速度大约快5倍
此背景信息的其余部分只是为了好玩。:-)
为什么int()。。。
使用int()
但我还是想快点。。。
因此,如果您使用C为python构建一个类似于以下内容的模块,基本上您可以变得更快:
int fast_arraytoint( const char * arr, int * result )
{
long val = 0;
while( *arr ) {
val = val*10 + (*arr++);
}
if (val > INT_MAX) {
return -1;
}
*result = (int)val;
return 0;
}
为了更深入地挖掘,我们必须弄清楚python是如何处理大整数的,这些大整数的值高于INT\u MAX
,并集成C模块,以便可以处理所有类型的python整数。这不是一秒钟前的“二进制”吗?在数组上循环,将每个值连接到一个字符串变量中,使用INT()
使之成为一个数字。@coldspeed是的,它是。我重新设计了这个问题,使它看起来简洁明了,切中要害@但是字符串不是不可变的吗?那么我怎样才能给它们添加一些东西呢?比如print(int(“.join(map(str,arr)))
?