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

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倍

我想将整数数组转换为整数。 例如,如果数组包含[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倍

此背景信息的其余部分只是为了好玩。:-)

为什么
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)))