Je voudrais prendre des piqûres d'une liste (ou tableau) d'une certaine taille, retourner la moyenne pour cette morsure, puis passer à la morsure suivante et recommencer. Y at-il un moyen de le faire sans écrire une boucle for?Comment faire la moyenne de certaines sous-sections d'une liste en python?
In [1]: import numpy as np
In [2]: x = range(10)
In [3]: np.average(x[:4])
Out[3]: 1.5
In [4]: np.average(x[4:8])
Out[4]: 5.5
In [5]: np.average(x[8:])
Out[5]: 8.5
Je cherche quelque chose comme, np.average (x [: Bitesize = 4]) pour revenir: [1.5,5.5,8.5]. J'ai étudié les réseaux de découpage et les réseaux, mais je n'ai rien trouvé de tel que je veux que cela se produise.
Pourquoi ne voulez-vous pas écrire une boucle? Quand les gens posent des questions en essayant de faire quelque chose sans une structure de contrôle arbitraire, cela suggère souvent qu'ils sont dans le malheureux état d'esprit «faire le plus possible dans une ligne». Si c'est la performance qui vous inquiète, alors dites-le, et donnez un exemple de la taille des données que vous traitez afin que les gens sachent quoi tester. –
Je pourrais écrire une boucle for, mais cela a eu la même impression pour moi que de nombreuses autres manipulations de liste ou de tableau que j'ai écrites pour des boucles jusqu'à ce que je comprenne que vous pourriez passer par des tableaux, par exemple. Alors j'ai demandé. De plus, la boucle for que j'aurais écrite aurait déclaré une nouvelle liste, en commençant une boucle for, en exécutant une instruction if (ou deux), en ajoutant des valeurs à ma nouvelle liste, et probablement plus. Donc, la boucle pour laquelle une personne a déjà répondu est à la fois claire pour moi et non-tragique dans le sens de la programmation que le mien aurait été. – JBWhitmore