有一个numpy biginteger吗?
Is there a numpy biginteger?
嗯。在我看来,似乎没有办法将 Python 的双整数存储在 numpy 数组中。是否需要做一些特别的事情来声明一个带有 bigints 的 numpy 数组?
不具体,不。您可以使用 dtype='object'
创建一个数组,它创建一个包含 Python 个对象(包括但不限于整数)的数组。这将为您提供很多类似 Numpy 数组的功能,但性能优势很少 none。
也就是说,Python 个对象的数组在内存性能方面与 Python list
没有显着差异。尽管如果你必须使用 bigints,它可能仍然比使用 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)
虽然我自己从未使用过此功能,所以我不完全确定还会出现哪些其他令人惊讶的限制。
嗯。在我看来,似乎没有办法将 Python 的双整数存储在 numpy 数组中。是否需要做一些特别的事情来声明一个带有 bigints 的 numpy 数组?
不具体,不。您可以使用 dtype='object'
创建一个数组,它创建一个包含 Python 个对象(包括但不限于整数)的数组。这将为您提供很多类似 Numpy 数组的功能,但性能优势很少 none。
也就是说,Python 个对象的数组在内存性能方面与 Python list
没有显着差异。尽管如果你必须使用 bigints,它可能仍然比使用 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)
虽然我自己从未使用过此功能,所以我不完全确定还会出现哪些其他令人惊讶的限制。