2013-04-12 16 views
8

Pracuję z przetwarzaniem obrazu w pythonie i chcę wyprowadzić zmienną, teraz zmienna b jest tablicą numpy o kształcie (200,200). Kiedy zrobić print b wszystko co widzę to:Drukowanie PEŁNEJ zawartości tablicy numpy

array([[ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     ..., 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.]]) 

Jak mogę wydrukować pełnej treści tej tablicy, zapisz go do pliku lub coś prostego, więc mogę po prostu patrzeć na zawartość w całości?

+0

Pierwszy pokaz wyjście 'rodzaju druku (b)' – dkamins

+0

poczekać sekundę, jest to tablica 'numpy'? – J0HN

Odpowiedz

0
to_print = "\n".join([", ".join(row) for row in b]) 
print (to_print) #console 

f = open("path-to-file", "w") 
f.write(to_print) #to file 

W przypadku jest to numpy tablicy: Print the full numpy array

+0

Tak, to numpy.ndarray – user2275931

+0

Okay, która bardzo pomaga, ale jaka jest struktura tego wyjścia? każdy wektor [] jest jednym rzędem, prawda? – user2275931

+0

Tak (przynajmniej powinno być :)). Spróbuj z mniejszą tablicą z wyraźnym wzorem elementów, np. [[1,2,3], [4,5,6]], aby zrozumieć strukturę. – J0HN

9

Oczywiście, można zmienić próg drukowania tablicy jako answered elsewhere z:

np.set_printoptions(threshold=np.nan) 

ale w zależności od tego, co starasz się spójrz, jest prawdopodobnie lepszy sposób na zrobienie tego. Na przykład, jeśli tablica jest naprawdę głównie zer jak już pokazano, i chcesz sprawdzić, czy ma ona wartości, które są niezerowe, można patrzeć na takie rzeczy jak:

import numpy as np 
import matplotlib.pyplot as plt 

In [1]: a = np.zeros((100,100)) 

In [2]: a 
Out[2]: 
array([[ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     ..., 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.]]) 

zmienić niektóre wartości:

In [3]: a[4:19,5:20] = 1 

i nadal wygląda tak samo:

In [4]: a 
Out[4]: 
array([[ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     ..., 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.], 
     [ 0., 0., 0., ..., 0., 0., 0.]]) 

Sprawdź pewne rzeczy, które nie wymagają ręcznego patrząc na wszystkie wartości:

In [5]: a.sum() 
Out[5]: 225.0 

In [6]: a.mean() 
Out[6]: 0.022499999999999999 

Albo wykreślić go:

In [7]: plt.imshow(a) 
Out[7]: <matplotlib.image.AxesImage at 0x1043d4b50> 

lub zapisać do pliku:

In [11]: np.savetxt('file.txt', a) 

array

+0

Awesome, komenda np.savetxt na pewno się przyda. Dziękuję. Próbowałem użyć .write, ale skończyło się po prostu zapisaniem okrojonej wersji pokazanej powyżej. – user2275931

+0

Nie ma za co @ user2275931 i witamy w [SO]! Jeśli to odpowiada na twoje pytanie, możesz kliknąć zaznaczenie, aby "zaakceptować" odpowiedź. – askewchan

+0

@ user2275931 Wspaniale, zwróć również uwagę, że ['np.savetxt'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html) ma również różne opcje formatowania. – askewchan