Hoe een array plotten in python?

Ik volg deze links Hoe voeg ik veel numpy-bestanden toe aan één numpy-bestand in pythonom al mijn numpy-bestanden in één bestand te plaatsen.
Nu moet ik mijn bestand plotten dat veel arrays bevat, elke array bevat een float-nummer: dit is mijn laatste code om arrays in één grote array toe te voegen:

import matplotlib.pyplot as plt 
import numpy as np
import glob
import os, sys
fpath ="/home/user/Desktop/OutFileTraces.npy"
npyfilespath="/home/user/Desktop/test"   
os.chdir(npyfilespath)
npfiles= glob.glob("*.npy")
npfiles.sort()
all_arrays = []
with open(fpath,'ab') as f_handle:
    for npfile in npfiles:
        #Find the path of the file and Load file
        all_arrays.append(np.load(os.path.join(npyfilespath, npfile)))        
    np.save(f_handle, all_arrays)
    data = np.load(fpath)
    print data

Deze code geeft me de volgende resultaten:

[[[[-0.00824758 -0.0081808  -0.00811402 ..., -0.0077236  -0.00765425
    -0.00762086]]]
 [[[-0.00141527 -0.00160791 -0.00176716 ..., -0.00821419 -0.00822446
    -0.0082296 ]]]
 [[[ 0.01028957  0.01005326  0.0098298  ..., -0.01043341 -0.01050019
    -0.01059523]]]
 ..., 
 [[[ 0.00614908  0.00581004  0.00549154 ..., -0.00814741 -0.00813457
    -0.00809347]]]
 [[[-0.00291786 -0.00309509 -0.00329287 ..., -0.00809861 -0.00797789
    -0.00784175]]]
 [[[-0.00379887 -0.00410453 -0.00438963 ..., -0.03497837 -0.0353842
    -0.03575151]]]]

Ik moet de plot plotten van het uiteindelijke bestand OutFileTraces.npy dat de grote array bevat. Daarvoor gebruik ik deze code:

import matplotlib.pyplot as plt 
import numpy as np
dataArray1= np.load(r'/home/user/Desktop/OutFileTraces.npy')
print(dataArray1)
plt.plot(dataArray1.T )
plt.show()

Ik krijg deze foutmelding:

Verhoog ValueError(“x en y mogen niet groter zijn dan 2-D”) ValueError: x
en y mag niet groter zijn dan 2-D

Al die waarden vertegenwoordigen de y_axe, maar mijn x-axe vertegenwoordigt punten van 1 tot 8000. Dus, zoals ik begrijp, moet het er als volgt uitzien om mijn uiteindelijke grote array te plotten (het verschil zit op []):

[[-0.00824758 -0.0081808  -0.00811402 ..., -0.0077236  -0.00765425
     -0.00762086]
     [-0.00141527 -0.00160791 -0.00176716 ..., -0.00821419 -0.00822446
        -0.0082296 ]
     [ 0.01028957  0.01005326  0.0098298  ..., -0.01043341 -0.01050019
        -0.01059523]
     ..., 
     [0.00614908  0.00581004  0.00549154 ..., -0.00814741 -0.00813457
        -0.00809347]
     [-0.00291786 -0.00309509 -0.00329287 ..., -0.00809861 -0.00797789
        -0.00784175]
     [-0.00379887 -0.00410453 -0.00438963 ..., -0.03497837 -0.0353842
        -0.03575151]]

Ik kan dit bestand gemakkelijk plotten.

Dus ik begrijp het probleem niet echt.

Ik zou u zeer dankbaar zijn als u mij zou kunnen helpen.


Antwoord 1, autoriteit 100%

als je een 2D-array geeft aan de functie plotvan matplotlib het zal aannemen dat de kolommen lijnen zijn:

Als x en/of y 2-dimensionaal is, dan zullen de corresponderende kolommen
worden geplot.

In uw geval wordt uw vorm niet geaccepteerd (100, 1, 1, 8000). Zoals dit, kunt u numpy squeeze gebruiken om het probleem op te lossen Snel:

NP.Squeez DOC: Verwijder single-dimensionale inzendingen uit de vorm van een array.

import numpy as np
import matplotlib.pyplot as plt
data = np.random.randint(3, 7, (10, 1, 1, 80))
newdata = np.squeeze(data) # Shape is now: (10, 80)
plt.plot(newdata) # plotting by columns
plt.show()

Merk op dat 100 sets van 80.000 punten veel gegevens zijn voor Matplotlib. Ik zou aanraden dat je op zoek bent naar een alternatief. Het resultaat van het CODE-voorbeeld (uitgevoerd in jupyter ) is:

Other episodes