SORU
23 Mayıs 2010, Pazar


Numpy çok baskı.dizi

Yazdırma biçimlendirilmiş numpy için herhangi bir yol olup olmadığını merak ediyorum.diziler, örneğin, şuna benzer:

x = 1.23456
print '%.3f' % x

Eğer istersem numpy baskı.yüzen dizi, birkaç ondalık yazdırır, sık sık 'bilimsel' bile düşük boyutlu diziler için oldukça zor olan format. Ancak, numpy.dizi anlaşılan %s ile string olarak, yani, basılı olmalıdır. Bu amaç için herhangi bir çözüm var mı?

CEVAP
23 Mayıs 2010, Pazar


set_printoptions çıkış hassasiyeti ayarlamak için kullanabilirsiniz:

import numpy as np
x=np.random.random(10)
print(x)
# [ 0.07837821  0.48002108  0.41274116  0.82993414  0.77610352  0.1023732
#   0.51303098  0.4617183   0.33487207  0.71162095]

np.set_printoptions(precision=3)
print(x)
# [ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]

Ve suppress küçük sayılar için bilimsel gösterimi kullanma bastırır:

y=np.array([1.5e-10,1.5,1500])
print(y)
# [  1.500e-10   1.500e 00   1.500e 03]
np.set_printoptions(suppress=True)
print(y)
# [    0.      1.5  1500. ]

Diğer seçenekler için docs for set_printoptions bkz.


Yazdırma seçenekleri yerel olarak uygulamak için, contextmanager: bir kullanabilirsiniz

import numpy as np
import contextlib

@contextlib.contextmanager
def printoptions(*args, **kwargs):
    original = np.get_printoptions()
    np.set_printoptions(*args, **kwargs)
    yield 
    np.set_printoptions(**original)

with-suite precision=3 içeride örneğin, suppress=True ayarlanır:

x = np.random.random(10)
with printoptions(precision=3, suppress=True):
    print(x)
    # [ 0.073  0.461  0.689  0.754  0.624  0.901  0.049  0.582  0.557  0.348]

Ama with-suite dış yazdırma seçeneklerini varsayılan ayarlarına geri döndü:

print(x)    
# [ 0.07334334  0.46132615  0.68935231  0.75379645  0.62424021  0.90115836
#   0.04879837  0.58207504  0.55694118  0.34768638]

Yüzer sonuna şeritli gelen sıfırlar önlemek için:

np.set_printoptions şimdi her türü için format işlevini belirtmek için izin verir formatter bir parametre vardır.

np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(x)

yazdıran

[ 0.078  0.480  0.413  0.830  0.776  0.102  0.513  0.462  0.335  0.712]

yerine

[ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • HBO

    HBO

    17 Mayıs 2006
  • LimeFire

    LimeFire

    2 ŞUBAT 2012