NumPy - Was ist der Unterschied zwischen frombuffer und fromstring?

8

Sie scheinen mir das gleiche Ergebnis zu geben:

%Vor%

Wann sollte man gegen die andere verwendet werden?

    
user202987 06.03.2014, 21:46
quelle

1 Antwort

13

Aus praktischer Sicht ist der Unterschied:

%Vor%

Erstellt eine Kopie der Zeichenfolge im Speicher, während:

%Vor%

oder

%Vor%

Verwendet den Speicherpuffer der Zeichenfolge direkt und verwendet keinen * zusätzlichen Speicher. Die Verwendung von frombuffer führt auch zu einem schreibgeschützten Array, wenn die Eingabe in buffer ein String ist, da Strings in Python unveränderlich sind.

(* Vernachlässigung einiger Speicherbytes für ein zusätzliches Python ndarray -Objekt - Der zugrunde liegende Speicher für die Daten wird gemeinsam genutzt.)

Wenn Sie nicht mit buffer -Objekten ( memoryview in python3.x) , sie sind im Wesentlichen eine Möglichkeit für C-Level-Bibliotheken, einen Speicherblock für die Verwendung in Python verfügbar zu machen. Es ist im Grunde eine Python-Schnittstelle für verwalteten Zugriff auf Raw-Speicher.

Wenn Sie mit etwas arbeiten, das die Pufferschnittstelle offenlegt, dann möchten Sie wahrscheinlich frombuffer verwenden. (Python 2.x-Strings und Python 3.x bytes legen die Pufferschnittstelle offen, aber Sie erhalten ein schreibgeschütztes Array, da Python-Strings unveränderlich sind.)

Andernfalls verwenden Sie fromstring , um ein numpiges Array aus einer Zeichenfolge zu erstellen. (Es sei denn, Sie wissen, was Sie tun, und möchten die Speicherbelegung genau steuern.)

    
Joe Kington 06.03.2014, 22:15
quelle

Tags und Links