python scipy编织长整数

时间:2013-04-27 20:13:38

标签: python long-integer

我正在使用scipy.weave来提高我的python代码的性能。基本上,我必须通过一个长数组(1024 ^ 3,3)-i.e.一个包含1024 ^ 3个元素的数组,每个元素有3个条目 - 为每个元素计算几个东西,然后填充另一个数组。

问题是当数组大于〜(850 ** 3,3)时,我得到并且分段错误。当我尝试在位置(a,3)读取数组的值时发生分段错误,其中a = 715827882.注意3 * a~2 ^ 31。我仔细研究了这个问题,在我看来,我不能通过长度大于整数变量大小的数组。

实际上,这个简单的程序

################################
import numpy as np
import scipy.weave as wv

def printf():

    a=3*1024**3

    support = """
          #include <iostream>
          using namespace std;
    """

    code = """
        cout << a << endl;
    """
    wv.inline(code,['a'],
              type_converters = wv.converters.blitz,
              support_code = support,libraries = ['m'])

printf()
#########################################

输出-1073741824而不是3221225472.这意味着(我认为)变量a在c代码中被取为32位的整数,而不是64位。

有谁知道如何解决这个问题?当然,我只能将我的阵列拆分成小于2 ^ 31的大小,但我觉得效率非常低。

感谢。

0 个答案:

没有答案