In den meisten Fällen ist die Methode die grundlegende kompilierte Version. Die Funktion verwendet diese Methode, wenn sie verfügbar ist, hat aber auch eine Art von Sicherung, wenn das Argument kein Array ist. Es hilft, den Code und/oder die Dokumente der Funktion oder Methode zu betrachten.
Zum Beispiel, wenn in Ipython
Ich bitte um die Summe Methode auf den Code zu sehen, ich sehe, dass es Code kompiliert wird
In [711]: x.sum??
Type: builtin_function_or_method
String form: <built-in method sum of numpy.ndarray object at 0xac1bce0>
...
Refer to `numpy.sum` for full documentation.
das gleiche tun auf np.sum
ich viele Zeilen Dokumentation sowie einige Python-Code erhalten : Wenn ich np.sum(x)
if isinstance(a, _gentype):
res = _sum_(a)
if out is not None:
out[...] = res
return out
return res
elif type(a) is not mu.ndarray:
try:
sum = a.sum
except AttributeError:
return _methods._sum(a, axis=axis, dtype=dtype,
out=out, keepdims=keepdims)
# NOTE: Dropping the keepdims parameters here...
return sum(axis=axis, dtype=dtype, out=out)
else:
return _methods._sum(a, axis=axis, dtype=dtype,
out=out, keepdims=keepdims)
nennen, wo x
ein Array ist, endet es bis Aufruf x.sum()
:
sum = a.sum
return sum(axis=axis, dtype=dtype, out=out)
np.amax
ähnlich (aber einfacher). Beachten Sie, dass das Formular np.
ein Objekt behandeln kann, das kein Array ist (das die Methode nicht hat), z. eine Liste: np.amax([1,2,3])
.
np.dot
und beide als "eingebaute" Funktion, so können wir nichts über die Priorität sagen. Wahrscheinlich rufen beide am Ende eine C-Funktion auf.
np.reshape
ist eine andere, die deligates wenn möglich:
try:
reshape = a.reshape
except AttributeError:
return _wrapit(a, 'reshape', newshape, order=order)
return reshape(newshape, order=order)
So np.reshape(x,(2,3))
in der Funktionalität x.reshape((2,3))
identisch ist. Aber der Ausdruck _wrapit
ermöglicht np.reshape([1,2,3,4],(2,2))
.
np.sort
gibt eine Kopie von einer Inplace-Art auf einer Kopie zu tun:
a = asanyarray(a).copy()
a.sort(axis, kind, order)
return a
x.resize
ist eingebaut, während np.resize
endet eine np.concatenate
und reshape
tun up.
Wenn Ihr Array eine Unterklasse ist, wie Matrix oder maskiert, kann es eine eigene Variante haben. Die Wirkung einer Matrix .sum
ist:
return N.ndarray.sum(self, axis, dtype, out, keepdims=True)._collapse(axis)
In den meisten Fällen ist die Funktion Version endet Aufruf der Methode Version (gebunden an das erste Argument) verwendet wird. Aber die Funktion kann das längere 'doc' haben. Für den Benutzer ist es meist eine Frage des Stils. – hpaulj
Siehe auch diese Ausgabe: https://github.com/numpy/numpy/issues/7452. Es scheint, dass die numpigen Entwickler es vorziehen, die Methodensyntax zu entfernen, jedoch nicht, weil sie Abwärtskompatibilität aufrechterhalten müssen. Persönlich würde ich bevorzugen, dass es nur konsistent gemacht wird, so dass alle Funktionen als Methoden und nicht als einige wenige aufgerufen werden können. – Peter