[PYTHON] Eine Geschichte voller absoluter Werte von numpy.ndarray

Vor kurzem habe ich eine kleine Operation an Audiodateien durchgeführt.

In Bezug auf diese Seite habe ich sie als 16-Bit-Ganzzahl `` `numpy.ndarray``` gelesen.

Soundwellenform in Python anzeigen (Wav-Datei)

import numpy as np
import wave

def read_wavefile(filename):
    """WAV-Format Datei numpy.Lesen Sie als ndarray"""
    wf = wave.open(filename , 'r')
    buf = wf.readframes(wf.getnframes())
    #Konvertieren Sie Binärdaten in 16-Bit-Ganzzahlen
    return np.frombuffer(buf, dtype='int16')

Ich wollte den absoluten Wert dieser Stimme nehmen, also werde ich das Array mit `` `numpy.absolute``` konvertieren.

arr = read_wavefile('test.wav')
arr_abs = np.absolute(arr)

Der Wert "-32768" bleibt dabei jedoch erhalten, ohne in einen positiven Wert umgewandelt zu werden. Wenn Sie das Histogramm nehmen, können Sie sehen, dass die anderen negativen Werte positiv sind, aber nur "-32768" übrig bleibt (obwohl die Werte in Ordnung sind).

import matplotlib.pyplot as plt

print(type(arr_abs))
# => <class 'numpy.ndarray'>

print(arr_abs.min())
# => -32768

plt.hist(np.absolute(arr), bins=100)
plt.show()

ダウンロード (2).png

Problemumgehung

Dies wurde durch Lesen als 32-Bit-Ganzzahl beim ersten Lesen behoben.

def read_wavefile(filename):
    """WAV-Format Datei numpy.Lesen Sie als ndarray"""
    wf = wave.open(filename , 'r')
    buf = wf.readframes(wf.getnframes())
    #Konvertieren Sie Binärdaten in 32-Bit-Ganzzahlen
    arr = np.frombuffer(buf, dtype='int16')
    return arr.astype(np.int32)

arr = read_wavefile('test.wav')
arr_abs = np.absolute(arr)
print(arr_abs.min())
# => 0

Dies liegt wahrscheinlich daran, dass 16-Bit-Ganzzahlen nur von -32768 bis 32767 darstellen können, also `numpy.absolue Ich denke, dass der Wert, der durch Konvertieren des Codes mit `erhalten wird, nicht konvertiert werden kann und der Wert, wie er ist, ausgegeben wird.

(Ich konnte keine Dokumentation zu diesen Spezifikationen finden.)

Bei der Verwendung von Programmen zur numerischen Berechnung wie Pythons Numpy- und R-Sprache wird häufig erkannt, dass der Datentyp der C-Sprache wie für die Beschleunigung verwendet wird. Daher ist Vorsicht geboten als üblich. Hat.

Die diesmal verwendete Version von `` `numpy``` ist übrigens 1.13.0.

$ pip freeze | grep numpy
numpy==1.13.0

Recommended Posts

Eine Geschichte voller absoluter Werte von numpy.ndarray
Eine Geschichte über den Wettbewerb mit einem Freund in Othello AI Preparation
Die Geschichte eines Parksensors in 10 Minuten mit dem GrovePi + Starter Kit
[Kleine Geschichte] So speichern Sie Matplotlib-Diagramme in einem Stapel mit Jupyter
Füllen Sie fehlende Werte mit Scikit-learn impute aus
Ein Memo mit RADEX-Umgebungskonstruktion
Eine verwirrende Geschichte mit zwei Möglichkeiten, XGBoost in Python + zu implementieren
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Zeichnen Sie in Jupyter ein Diagramm mit japanischen Beschriftungen
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
Löschen Sie Daten in einem Muster mit Redis Cluster
Starten Sie Django in einer virtuellen Umgebung mit Pipenv
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Löschen Sie Zeilen mit beliebigen Werten in pandas DataFrame
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Eine Geschichte über den Umgang mit Binärdaten in Python
Klonen Sie mit einem bestimmten Zweig / Tag in GitPython
Eine Geschichte über die Implementierung eines Anmeldebildschirms mit Django
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Behandeln Sie Ganzzahltypen mit fehlenden Werten in Pandas
Konfigurieren Sie ein Modul mit mehreren Dateien in Django
Die Geschichte, die zur Installation von Pip passt
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Geschichte der Verwendung von Resonas Software-Token mit 1Password
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Ich möchte mit einem Knopf am Kolben übergehen
Konvertieren Sie eine Textdatei mit hexadezimalen Werten in eine Binärdatei
Spielen mit der benutzerlokalen API für künstliche Intelligenz in Python
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Versuchen Sie, Python mit pybind11 in ein C ++ - Programm einzubetten
Zeichnen einer Baumstruktur mit D3.js in Jupyter Notebook
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Ich möchte mit einem Roboter in Python arbeiten.
Der süchtig machende Punkt des "Bayes-Denkens in Python"
Eine Geschichte, die die Discord-Aktivität im Slack-Status widerspiegelt
Geben Sie eine Zeichenfolge mit Zeilenumbrüchen in PyYAML aus
Die Geschichte, wie theano mit TSUBAME 2.0 verwaltet wurde
Eine Geschichte, die mit ein wenig Einfallsreichtum mit Google Cloud Storage verknüpft ist
Eine Geschichte über einen Linux-Anfänger, der in einer Woche LPIC101 bestanden hat
Zeigen Sie ein Histogramm der Bildhelligkeitswerte in Python an
Iframe in Seite mit Selenium kann nicht bearbeitet werden
Führen Sie eine Python-Datei mit relativem Import in PyCharm aus
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
Stoppen Sie eine Instanz mit einem bestimmten Tag in Boto3
Eine Geschichte, die verschwunden ist, als ich einen Pfad angegeben habe, der mit tilda (~) in Python Open beginnt
[Hinweis] Eine Geschichte über den Versuch, eine Klassenmethode mit zwei Unterbalken in der Python 3-Serie zu überschreiben.
Maschinelles Lernen Eine Geschichte über Menschen, die mit GBDT in GBDT in Python nicht vertraut sind
[Django] Eine Geschichte über das Feststecken in einem Sumpf beim Versuch, einen Reißverschluss mit einem Formular zu validieren [TDD]