2013-04-12 12 views
8

Ich arbeite mit Bildverarbeitung in Python und ich möchte eine Variable ausgeben, jetzt ist die Variable b ein numpy Array mit Form (200,200). Als ich print b tun alles, was ich sehe, ist:Drucken FULL Inhalte von numpy Array

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.]]) 

Wie kann ich aus dem vollen Inhalt dieses Feldes drucken, schreiben Sie es auf eine Datei oder etwas einfach so kann ich auf den Inhalt schauen gerade in vollem Umfang?

+0

Erste Show Ausgabe von 'Drucktyp (b)' – dkamins

+0

eine Sekunde warten, ist es 'numpy' Array? – J0HN

Antwort

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 

Im Fall ist es numpy Array:

np.set_printoptions(threshold=np.nan) 

Aber je nachdem, was Sie versuchen zu: Print the full numpy array

+0

Ja, es ist numpy.darray – user2275931

+0

Okay, das hilft viel, aber was ist die Struktur dieser Ausgabe? jeder [] Vektor ist eine einzelne Zeile richtig? – user2275931

+0

Ja (zumindest sollte es sein :)). Versuchen Sie es mit einer kleineren Anordnung mit klaren Elementen, z. [[1,2,3], [4,5,6]] um die Struktur zu verstehen. – J0HN

9

Natürlich können Sie die Druckschwelle des Arrays als answered elsewhere mit ändern schau mal, es gibt wahrscheinlich einen besseren Weg, das zu tun. Zum Beispiel, wenn wirklich Ihr Array ist meist Nullen, wie Sie haben gezeigt, und Sie wollen prüfen, ob es Werte hat, die ungleich Null sind, können Sie die Dinge wie folgt aussehen:

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.]]) 

ändern einige Werte:

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

Und es sieht immer noch die gleichen:

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.]]) 

prüfen einige Dinge, die manuell nicht bei allen Werten suchen erfordern:

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

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

Oder plotten es:

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

oder in einer Datei speichern:

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

array

+0

Super, der np.savetxt Befehl wird definitiv nützlich sein. Danke. Ich habe versucht, .write zu verwenden, aber es endete nur die abgeschnittene Version, die oben gezeigt wird. – user2275931

+0

Sie sind herzlich willkommen @ user2275931, und Willkommen bei [SO]! Wenn dies Ihre Frage beantwortet, können Sie auf das Häkchen klicken, um die Antwort zu akzeptieren. – askewchan

+0

@ user2275931 Großartig, beachten Sie auch, dass ['np.savetxt'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html) auch alle möglichen Formatierungsoptionen verwendet. – askewchan