Comments on: Les bases de Numpy http://sametmax.com/les-bases-de-numpy/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: kontre http://sametmax.com/les-bases-de-numpy/#comment-21004 Mon, 10 Mar 2014 20:28:30 +0000 http://sametmax.com/?p=9198#comment-21004 Toi, tu as fait du Matlab où il y a implicitement un nombre infini de dimensions de taille 1 supplémentaires. En python ce n’est pas le cas.
Si tu déclares un array de 3 éléments, ça a une dimension de longueur 3. Mais tu peux reshaper comme tu veux en rajoutant des dimensions de taille 1.
Comment ça se fait que tu ne connaisses pas le nombre de dimensions dans ton code ? Il doit y avoir un truc pas clair avant. Ton souci vient du fait que si n est sensé valoir 1 il vaut 0

Petites remarques sur ton code:
.reshape(len(item),1) peut être remplacé par .reshape(-1,1) (la dimension avec -1 contient tout ce qui’ n’est pas rentré dans le reste)
– dans le try depth aura une taille de (len(item),1) alors que dans le except depth n’aura pas de dimension, c’est un scalaire.
– Pour rajouter une dimension, faire comme tu as fait fonctionne mais c’est moche. Tu peux soit faire buffer = buffer.reshape(1, -1), soit buffer = buffer[np.newaxis, :] (np.newaxis est en fait égal à None, c’est juste une écriture plus explicite)
– Au final je pense que tu peux utiliser np.concatenate plutôt que np.hstack pour que ça concatène dans la bonne dimension. Ça devrait même pouvoir remplacer tout ton code.

Numpy c’est pas de la bouse (même si y’a des défauts), il faut juste savoir l’utiliser. Si t’as pas peur de l’anglais, http://wiki.scipy.org/Tentative_NumPy_Tutorial couvre bien les bases.

]]>
By: furankun http://sametmax.com/les-bases-de-numpy/#comment-20979 Mon, 10 Mar 2014 09:42:18 +0000 http://sametmax.com/?p=9198#comment-20979 oui alors clairement c’est trop haut niveau pour moi… j’ose espérer que tu t’en es dépatouillé!
Ceci mis à part je voulais apporter ce témoignage tout personnel: Numpy c’est de la bouse. Ou alors je n’ai pas compris. Mais franchement son intégration dans un bout de code m’a énervé toute la journée vendredi, pour une simple histoire de dimensions (de merde!)
Si on déclare un array de deux fois trois éléments, ça fait un array de dimensions 2×3. normal.
Si maintenant on déclare un array de UNE fois trois éléments, ça fait un… truc de dimensions 3x0. Et c’est là que les ennuis commencent.
Les dimensions ne sont pas déclarées de manière homogène. Impossible d’itérer dessus le long de la deuxième dimension (puisqu’elle n’existe pas). Impossible d’append le long de cette dimension (idem). Bref, si jamais vous ne connaissez pas les dimensions de votre array dès le départ ou que vous devez le modifier en cours de route, vous êtes niqués.
Une solution possible, pas ce que j’appelle le plus simple mais visiblement c’est le cas: ajouter une dimension après avoir examiné la tronche de votre array. Bonjour la fluidité.
Exemple:

# item = np.array de taille n lignes par 4 colonnes;
# on veut récupérer la quatrième colonne 'depth' et 
# l'ajouter à un buffer
 
# get item depth and reshape it
try:
  depth = item[:,3].reshape(len(item),1)
except IndexError:
  depth = item[3]
 
# give buffer a supplementary dimension if needed
if len(buffer.shape) == 1:
  buffer= np.array([buffer]) # ce truc m'a gavé
 
result = np.hstack((buffer, depth))
]]>
By: kontre http://sametmax.com/les-bases-de-numpy/#comment-20516 Thu, 27 Feb 2014 23:07:56 +0000 http://sametmax.com/?p=9198#comment-20516 Je l’ai fait mais le résultat est faux ! J’ai corrigé un peu mais la correction est sur mon ordi du boulot, que je ne retrouverai que lundi…

]]>
By: Max http://sametmax.com/les-bases-de-numpy/#comment-20506 Thu, 27 Feb 2014 17:08:08 +0000 http://sametmax.com/?p=9198#comment-20506 @furankun,

here it is: https://ivulab.asu.edu/software/quality/cpbd

]]>
By: furankun http://sametmax.com/les-bases-de-numpy/#comment-20501 Thu, 27 Feb 2014 14:49:41 +0000 http://sametmax.com/?p=9198#comment-20501 fais péter! ça m’intéresse oui, à tous niveaux.

]]>
By: Max http://sametmax.com/les-bases-de-numpy/#comment-20496 Thu, 27 Feb 2014 13:23:30 +0000 http://sametmax.com/?p=9198#comment-20496 @funrankun

je te remercie grandement mais quelqu’un s’en est déjà occupé ;) . Le cher Kontre qui rôde souvent sur le blog ^^
Si toutefois tu veux quand même jetter un oeil ne serait-ce que pour la beauté du sport demande moi ;)
ça parle d’image processing, détection de la nettetée d’une image pour être précis.

]]>
By: furankun http://sametmax.com/les-bases-de-numpy/#comment-20487 Thu, 27 Feb 2014 11:17:37 +0000 http://sametmax.com/?p=9198#comment-20487 Tout d’abord, merci pour l’article, pour les articles en fait. Etant un scientificos venant de Matlab de base j’avais attaqué Python directement via Numpy et Scipy, et vous m’avez montré la lumière avec le Python “simple”. Maintenant je pense avoir des bases plus solides pour pouvoir m’y remettre un peu plus facilement, le cas échéant (j’ai déjà réessayé et il y a quand même du boulot).
Et donc Max, je ne prétends pas être un bourrin en Matlab ni en Python, mais je peux toujours jeter un oeil sur ton code si tu le souhaites. De toute façon si ça dépasse mes compétences je te le dirai très vite :D

]]>
By: Max http://sametmax.com/les-bases-de-numpy/#comment-20230 Sat, 22 Feb 2014 10:40:53 +0000 http://sametmax.com/?p=9198#comment-20230 Dommage qu’on ait pas plus de contributeurs dans cette section super interressante.


A ce propos je cherche un kador en matlab qui serait passé du côté obscur du python (numpy/opencv) pour porter un ptit bout de code (à vue de nez une centaine de lignes)

à vot bon coeur msieux dames…

]]>
By: kontre http://sametmax.com/les-bases-de-numpy/#comment-20171 Thu, 20 Feb 2014 19:29:11 +0000 http://sametmax.com/?p=9198#comment-20171 @Marien: tu as la fonction clip pour ça: http://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html
x = x.clip(bounds[0], bounds[1])

Cet article est très bien, mais dites-vous bien qu’il effleure à peine la surface… Ce qui m’amène à ma remarque: la doc numpy est plutôt bien fichue (et bien mieux que matplotlib) mais il y a un paquet de fonctions, ce qui rend la lib difficile à aborder. Un point de départ pas mal est http://wiki.scipy.org/Tentative_NumPy_Tutorial (en anglais). C’est gros, mais ça présente juste la base. Dites vous que je ressens la même chose quand vous parlez de django ;)

Il n’y a pas vraiment d’intérêt à un tuto sur scipy, c’est principalement un ensemble de fonction qui vient compléter numpy. Perso je m’en sers très très rarement, alors que import numpy as np (cete manière d’importer est aussi standard que le pep8) est de base dans mes scripts avec les imports de __future__.

J’aurais plein de trucs à raconter, mais pour finir je dirais que sous windows les gens utilisent en général des distributions python scientifiques parce que c’est la merde à compiler à la main. Il existe principalement python(x,y) (la meilleure à mon sens mais que en 32 bits), WinPython (portable, vous pouvez l’installer sur une clé usb) et Anaconda.
Sous Linux 99% des paquets sont dans les dépôts, le reste c’est pip.

N’hésitez pas à poser des questions !

]]>
By: Sam http://sametmax.com/les-bases-de-numpy/#comment-20170 Thu, 20 Feb 2014 18:50:35 +0000 http://sametmax.com/?p=9198#comment-20170 Merci bash !

]]>