2015-02-17 22 views
9

Hmm. Python'un biginteger'lerini numpy dizisinde saklamanın bir yolu yok gibi görünüyor. Büyük harflerle uyuşmuş bir dizi ilan etmek için yapmanız gereken özel bir şey var mı?Saygısız biginteger var mı?

cevap

12

Özellikle değil, no. dtype='object' ile bir dizi oluşturabilir, bu da bir Python nesnesi dizisi oluşturur (dahil ancak bunlarla sınırlı değil). Bu size çok sayıda Numpy dizisi benzeri işlevsellik kazandıracak, ancak bunlardan çok azına, performans avantajlarından birkaçı. Bir Python nesnesi dizisi, bir Python list bellek performansından önemli ölçüde farklı değildir. Yine de bigumeleri kullanmanız gerekiyorsa, yine de diğer Numpy dizileri ile işlemler yaparken de dahil olmak üzere element-aritmetik işlemler elde ettiğiniz için hala list'u kullanmak tercih edilebilir. Örneğin:

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) 

olsa bu kabiliyet kendim hiç kullanmadım, o yüzden şaşırtıcı sınırlamalar ortaya çıkabilecek başka hangi tamamen emin değilim.

+0

İyi görünüyor. Ben, 'dot' ve 'matrix_power' gibi işlemler de dahil olmak üzere, ints ile doldurulan 'numpy' matrislerini ve herşeyin çalışmasını kullanarak Fibonacci sayılarını hesapladım. – aickley