Ho una matrice che assomiglia:matplotlib: array NumPy Plot con Nessuno come valori
k = numpy.array([(1.,0.001), (1.1, 0.002), (None, None),
(1.2, 0.003), (0.99, 0.004)])
voglio tracciare i valori che non sono (None, None)
e mantenere l'indice del valore di matrice. Cioè, voglio un divario ovunque ci sia un valore (None, None)
.
Quando ciò è fatto vorrei tracciare
y = k[:,0] + k[:,1]
ma non posso anche aggiungere gli array insieme. Ho provato a mascherare l'array, ma ho perso i valori dell'indice dell'array originale .
Un esempio minimo:
import matplotlib.pyplot as pyplot
import numpy
x = range(5)
k = numpy.array([(1.,0.001), (1.1, 0.002), (None, None),
(1.2, 0.003), (0.99, 0.004)])
Fig, ax = pyplot.subplots()
# This plots a gap---as desired
ax.plot(x, k[:,0], 'k-')
# I'd like to plot
# k[:,0] + k[:,1]
# but I can't add None
# Here I get rid of the (None, None) values so I can add
# But I lose the original indexing
mask = k != (None, None)
y = k[mask].reshape((-1,2))
ax.plot(range(len(y)), y[:,0]+y[:,1], 'k--')
Potrei per questo semplice esempio, ma ottengo i miei dati da un'altra fonte quindi non posso controllarlo. – jlconlin
e non puoi sostituire la trama? Potresti fare quello che stai facendo, ma mascherare il valore x anche nella trama? –
Questo ha funzionato quasi. Quando crei la maschera devi rendere 'None' un array come la risposta di Saullo. – jlconlin