有一个numpy biginteger?

时间:2015-02-17 00:13:33

标签: python numpy biginteger

嗯。我似乎没有办法将Python的大整数存储在一个numpy数组中。你需要做些什么特别的事情来声明一个带有bigint的numpy数组吗?

1 个答案:

答案 0 :(得分:13)

不具体,不。您可以使用dtype='object'创建一个数组,该数组创建一个Python对象数组(包括但不限于int)。这将为您提供许多类似于Numpy阵列的功能,但几乎没有任何性能优势。

也就是说,就内存性能而言,Python对象数组与Python list没有显着差异。虽然如果必须使用bigint,仍然可能更喜欢使用list,因为您仍然可以获得逐元算术运算,包括在与其他Numpy数组进行操作时。例如:

In [1]: import numpy as np

In [2]: big = np.array([10**100, 10**101, 10**102], dtype='object')

In [3]: big
Out[3]: 
array([ 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
       100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
       1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000], dtype=object)

In [4]: big + np.array([1, 2, 3])
Out[4]: 
array([ 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
       100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002,
       1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003], dtype=object)

我自己从未使用过这种功能,所以我并不完全确定会出现其他令人惊讶的限制。