Comments on: Un tools d’itertour, ou l’inverse http://sametmax.com/un-tools-ditertour-ou-linverse/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Max http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-183893 Fri, 23 Dec 2016 23:03:00 +0000 http://sametmax.com/?p=20922#comment-183893 merci pour ce super article. bien plus explicite que la doc officielle :)

]]>
By: kontre http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182727 Tue, 15 Nov 2016 09:58:10 +0000 http://sametmax.com/?p=20922#comment-182727 @hiramash Les strides sont utilisés en interne par numpy, c’est ça qui fait ses perfs, mais je ne vois pas quelle opération tu veux faire en utilisant les strides ? Tu as un exemple ?

Ce à quoi il faut faire gaffe pour les perf c’est la dimension sur laquelle tu itères: si ça fait des sauts en mémoire c’est moins bon que si les données sont lues à la suite. La dimension en question dépend des strides en effet. Pour un tableau créé de manière standard, il faut itérer sur la dernière dimension de préférence (mais en pratique t’as pas souvent le choix).

@Sam C’est vrai que parfois une API pour des tableaux à N dimensions ça serait pas du luxe. Mais bon dans mon cas j’ai souvent besoin d’algèbre linéaire, donc je ne réfléchis même pas à prendre autre chose que numpy.

]]>
By: Pompom http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182595 Wed, 09 Nov 2016 20:46:15 +0000 http://sametmax.com/?p=20922#comment-182595 Du peu que je connaisse des langages fonctionnels fold() n’est pas un équivalent à accumulate() mais à reduce()

]]>
By: hiramash http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182430 Fri, 04 Nov 2016 21:45:30 +0000 http://sametmax.com/?p=20922#comment-182430 Bonsoir kontre,

Réponse très instructive sur numpy. J’avais remarqué qu’il y avait quelques itérateurs dans numpy, mais je n’avais pas bien compris leur fonctionnement.

En revanche, il me semblait que pour bénéficier des performances de « vues sur les tableaux », il fallait vraiment se servir de « strides ». Si tu as des fonctions / macros de plus haut niveau, je suis preneur.

C’est une stratégie similaire à numpy, que j’ai vue dans RapidMiner.

Après, il y a moyen de rentrer carrément dans la sémantique des algorithmes, et de se demander si on peut trouver une version « incrémentale » de tous les algorithmes de base en algèbre linéaire.

Pour l’instant, à ce sujet j’ai trouvé une piste intéressante, où il existe une version « Monte-Carlo » de toutes les opérations algébriques de base en algèbre matricielle. Chaque opération devient la somme de résultats partiels et successifs issus de tirages statistiques.

C’est particulièrement adapté pour la notion de « q-bit » qui fonctionne un peu en mode « itérateur » :

– Une librairie Python pour du Monte-Carlo / qbits : « quameon »

– « Monte Carlo Linear Algebra » : http://www.mit.edu/~dimitrib/Monte_Carlo_Linear_Algebra.pdf

Voilà, voilà…

]]>
By: Sam http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182421 Fri, 04 Nov 2016 15:50:08 +0000 http://sametmax.com/?p=20922#comment-182421 Il y une différence entre intégrer toute la lib et intégrer juste l’API principale. L’api d’array, avec les opérations les plus courantes. Ou l’api de requests, avec idem, les requêtes les plus courantes, c’est un gain énorme.

]]>
By: kontre http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182420 Fri, 04 Nov 2016 10:17:26 +0000 http://sametmax.com/?p=20922#comment-182420 Le truc avec numpy c’est qu’il évolue beaucoup plus vite que python, l’intégrer dans python ralentirait énormément son développement.

C’est aussi pour ça que request est pas inclus dans python par exemple, alors qu’il y aurait un intérêt énorme.

Sinon pour l’itération sur les tableaux numpy on garde le côté lazy sur les tableaux à plusieurs dimensions: l’itération se fait sur la première dimension, et renvoit des vues sur le tableau initial avec les dimensions restantes, donc ça prend que dalle de mémoire. Mais de manière générale la philosophie est différente, et il sera bien plus efficace de vectoriser que d’itérer (quand c’est possible).

Jouer avec numpy.ndarray.strides c’est très bas level quand même, l’intérêt de numpy c’est justement de ne pas s’emmerder avec !

]]>
By: Sam http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182357 Tue, 01 Nov 2016 23:21:37 +0000 http://sametmax.com/?p=20922#comment-182357 En pratique, on ne veut pas une taille infinie sur un count, mais le limiter à la taille maximale adéquate pour le système. Il vaut mieux faire:

>>> import sys
>>> range(sys.maxsize)
range(0, 9223372036854775807)
]]>
By: octarin http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182350 Tue, 01 Nov 2016 18:21:38 +0000 http://sametmax.com/?p=20922#comment-182350 Très bon article, ça permet de redécouvrir la bibliothèque standard de python et d’éviter de réinventer la roue dans nombre de cas.

Néanmoins, j’aurais des réserves à propos de ta remarque sur count.

Par quel autre moyen simple peux-tu retourner un générateur qui renvoie sans s’arrêter une suite de nombres ? Range impose en effet un point d’arrêt, ce que ne fait pas count. Or parfois il peut être utile de ne pas mettre de limites dans une telle énumération (du moment qu’on sait ce qu’on fait bien entendu…), comme par exemple pour se dispenser d’un while explicite ce qui parfois facilite la compréhension.

count n’est donc pas entièrement à jeter :)

]]>
By: Fred http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182346 Tue, 01 Nov 2016 14:07:23 +0000 http://sametmax.com/?p=20922#comment-182346 Grosse typo: La raison de ce manque d’intuitivité, c’est que théoriquement groupby() peut travailler de manière paresseuse (de “paresse” et non de “paraître”).

Super article. Le plus dur, pour moi, c’est de me dire “putain mais là je me suis fait chier à écrire un algo alors que j’avais dropwhile qui aurait pu me le faire immédiatement” et de me dire ensuite “alors si je veux remplacer toutes les fois où j’ai mis un if not truc: continue par un dropwhile combien de temps ça va me prendre”…

Et euh sinon je viens de killer ma vm après avoir tenté le list(infinite_generator()). Ben oui, moi quand on me dit “ça va crasher” ben c’est plus fort que moi: faut que je teste… ;)

]]>
By: Cactus http://sametmax.com/un-tools-ditertour-ou-linverse/#comment-182330 Mon, 31 Oct 2016 16:56:51 +0000 http://sametmax.com/?p=20922#comment-182330 s/callack/callback

s/mais vous il/mais il

]]>