2016-07-18 21 views
3

Id gerne verstehen, warum der folgende Code:numpy log mit numpy Arrays

print((hypothesis(x, theta_))) 

Ergebnisse in einem Array mit diesem Format

[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,  
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] 

und wenn ich die numpy.log Funktion anwenden:

print(np.log(hypothesis(x, theta_))) 

ich folgendes Ergebnis

[-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 -0.69314718 
-0.69314718 -0.69314718 -0.69314718 -0.69314718] 

Warum unterscheidet sich das Format des Arrays, wenn ich die Protokollfunktion anwende?

+0

Was ist der Unterschied? – karakfa

+0

In der Ausgabe sind keine Kommas vorhanden –

Antwort

3

Vermutlich hypothesis(x, theta_) gibt einen Python Liste zurück. Wenn Sie eine Liste drucken, sind die Kommas enthalten.

np.log(hypothesis(x, theta_)) gibt ein numpy Array zurück. Wenn Sie ein nupy Array drucken, sind die Kommas nicht enthalten.

Zum Beispiel:

In [1]: x = [1, 2, 3] # `x` is a python list. 

In [2]: print(x) 
[1, 2, 3] 

In [3]: a = np.array(x) # `a` is a numpy array. 

In [4]: print(a) 
[1 2 3] 

Warum numpy nicht die Kommas in der gedruckten Ausgabe enthält? Das ist etwas, was du den nüchternen Entwicklern fragen musst. Es macht die Ausgabe ein wenig weniger überladen, aber es kann ein Ärgernis sein, wenn Sie die gedruckten Werte wieder in irgendeinen anderen Code kopieren und einfügen möchten.

Wenn Ihr Druck die „repr“, enthält die Ausgabe die Namen array, und es enthält die Kommas:

In [6]: print(repr(a)) 
array([1, 2, 3])