Есть ли numpy biginteger?

Мда. Мне кажется, что нет способа хранить bigintegers Python в массиве numpy. Есть ли что-то особенное, что вы должны сделать, чтобы объявить массив numpy с bigints?

1 ответов


не специально, нет. Вы можете создать массив с dtype='object', который создает массив объектов Python (включая, но не ограничиваясь ints). Это даст вам много функций, подобных массиву Numpy, но мало ни одного из преимуществ производительности.

то есть, массив объектов 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)

Я никогда не использовал эту возможность, поэтому я не совсем уверен, что другие удивительные ограничения могут возникнуть.