J'ai cette erreur dans le titre et je ne sais pas ce qui ne va pas. Cela fonctionne lorsque j'utilise np.hstack au lieu de np.append, mais j'aimerais accélérer les choses, utilisez donc append.
time_list une liste de floats
heights est un tableau 1p np.array de flotteurs
j = 0
n = 30
time_interval = 1200
axe_x = []
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.append(time_list[np.arange(j+n,j+(time_interval-n))])
File "....", line .., in <module>
axe_x.append(time_list[np.arange(j+n,j+(time_interval-n))])
TypeError: only integer arrays with one element can be converted to an index
Le problème est juste comme l'erreur l'indique, time_list
Est une liste normale python, et vous ne pouvez donc pas l'indexer en utilisant une autre liste (à moins que l'autre liste ne soit un tableau avec un seul élément ). Exemple -
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
Si vous voulez faire ce genre d’indexation, vous devez faire de time_list
Un numpy.array
. Exemple -
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])
Une autre chose à noter serait que dans votre boucle while
, vous n'augmentez jamais j
, de sorte qu'il peut se terminer avec une boucle infinie, vous devriez également augmenter j
d'un certain montant (peut-être time_interval
?).
Mais selon l'exigence que vous avez posté dans les commentaires -
axe_x devrait être un tableau 1d de floats généré à partir de la liste time_list
Vous devez utiliser .extend()
au lieu de .append()
, .append
Créerait une liste de tableaux pour vous. Mais si vous avez besoin d'un tableau 1D, vous devez utiliser .extend()
. Exemple -
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.