In den Scipy Dokumente geschrieben, dass:Lauf np.empty zum zweiten Mal
Die Funktion Nullen ein Array voller Nullen erzeugt, erzeugt die Funktion diejenigen ein Array voll von Einsen und die Funktion erstellt eine leere Array, dessen anfänglicher Inhalt zufällig ist und vom Zustand des Speichers abhängt. Standardmäßig ist der dtype des erstellten Arrays float64.
So war ich diesen Code lautete:
import numpy as np
np.empty((1,2))
Und es ist Rückkehr:
array([[ 6.92892901e-310, 8.42664136e-317]])
So ein Zufallszahlen ist es zurückgeben und alle Dinge sind groß.
Aber, als ich diesen Code zum zweiten Mal ausgeführt habe (in dieser Shell), ist es ein Null-Array zurück!
np.empty((1,2))
array([[ 0., 0.]])
Und hier ist die Frage, warum es Null Array bei der zweiten Zeit (anstelle der Zufallszahl) zurückgibt?
Interessant! Ich hätte nicht erwartet, dass es dieselbe Erinnerung ist. Aber ist dieses Verhalten garantiert? –
@PaulPanzer Ich bin mir fast sicher, dass sowohl das Zero'ing als auch die Wiederverwendung ein Implementierungsdetail ist (also nicht garantiert). Letzteres macht jedoch Sinn, weil es wahrscheinlich effizienter ist, kürzlich frei gewordenen Speicher wiederzuverwenden, wenn genau die gleiche "Größe" erneut angefordert wird, so dass es nicht unwahrscheinlich ist. – MSeifert
Das ist wirklich rätselhaft. Wenn es gute Gründe gibt, den Speicher zum zweiten Mal auf Null zu setzen. Warum zum Teufel sie nicht das erste Mal anwenden? –