Il problema è come l'errore indica, time_list
è un elenco pitone normale, e quindi non può indice utilizzando un altro elenco (a meno che l'altro elenco è un array con elemento singolo). Esempio -
In [136]: time_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
In [137]: time_list[np.arange(5,6)]
Out[137]: 6
In [138]: time_list[np.arange(5,7)]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-138-ea5b650a8877> in <module>()
----> 1 time_list[np.arange(5,7)]
TypeError: only integer arrays with one element can be converted to an index
Se si vuole fare questo tipo di indicizzazione, si avrebbe bisogno di fare un time_list
numpy.array
. Esempio -
In [141]: time_list = np.array(time_list)
In [142]: time_list[np.arange(5,6)]
Out[142]: array([6])
In [143]: time_list[np.arange(5,7)]
Out[143]: array([6, 7])
Un'altra cosa da notare sarebbe che nel vostro while
ciclo, non hai mai aumentare j
, quindi potrebbe finire-up con ciclo infinito, si dovrebbe anche aumentare la j
da una certa quantità (forse time_interval
?).
Ma secondo il requisito di cui hai postato commenti -
axe_x should be a 1d array of floats generated from the time_list list
Si consiglia di utilizzare .extend()
invece di .append()
, .append
creerebbe un elenco di array per voi. Ma se hai bisogno di un array 1D, devi usare .extend()
. Esempio -
time_list = np.array(time_list)
while j < np.size(time_list,0)-time_interval:
if (not np.isnan(heights[j])) and (not np.isnan(heights[j+time_interval])):
axe_x.extend(time_list[np.arange(j+n,j+(time_interval-n))])
j += time_interval #Or what you want to increase it by.
Cosa stai cercando di ottenere con 'axe_x.append()'? Puoi mostrare i tuoi input e output? Gli elenchi di indici –
non sono così potenti come con gli array. Accettano solo fette e interi. – hpaulj
axe_x deve essere un array 1d di float generato dall'elenco time_list – GeoffreyB