嗯,似乎没有一种方法可以将Python的bigintegers存储在numpy数组中。声明一个带有bigints的numpy数组需要做些特殊的事情吗?
嗯,似乎没有一种方法可以将Python的bigintegers存储在numpy数组中。声明一个带有bigints的numpy数组需要做些特殊的事情吗?
没有特别的方法,您可以使用 dtype='object'
创建一个数组,它将创建一个包含Python对象(包括但不限于int)的数组。这将为您提供许多类似于Numpy数组的功能,但几乎没有性能优势。
也就是说,与Python list
相比,在内存性能方面,Python对象数组没有明显的差异。尽管如果您必须使用大整数,仍然可能更喜欢使用数组而不是 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)
我自己从未使用过这个功能,因此我不完全确定会出现哪些令人惊讶的限制。
numpy
矩阵计算斐波那契数列,包括dot
和matrix_power
等操作都可以正常工作。 - Ilya Kolpakov