Informatique

Actus internationales & françaises, politique, société, économie, culture, idées, planète, science, technologie, urbanisme, photographie et bien d'autres choses !

Re: Informatique

Messagepar Kvelertak » 13 Nov 2017, 10:25

Le processeur est à 11% quand ça fait du bruit. Par contre, la température est à 64 degrés.

Avatar de l’utilisateur
Kvelertak
Maillot jaune
 
Messages: 10325
Localisation: Et ça fait... ZUMBA CAFEW

Re: Informatique

Messagepar abz » 13 Nov 2017, 11:08

11% seulement, c'est que ton ventilo est encore encrassé. Essai avec une bombe dépoussiérante ou avec un compresseur si t'as. Regarde aussi si tu peux dévisser une partie du cache arrière de l'ordi pour mieux accéder au ventilo et pour souffler vers l'extérieur plutôt que vers l'intérieur (évidemment fais attention à ne rien abimer à l'intérieur :mrgreen: ).

En tout cas 64° ça va, c'est un peu haut mais il n'y a pas de risque à l'utiliser ;)

Avatar de l’utilisateur
abz
Maillot à pois
 
Messages: 3500

Re: Informatique

Messagepar Kvelertak » 13 Nov 2017, 11:40

abz a écrit:11% seulement, c'est que ton ventilo est encore encrassé. Essai avec une bombe dépoussiérante ou avec un compresseur si t'as. Regarde aussi si tu peux dévisser une partie du cache arrière de l'ordi pour mieux accéder au ventilo et pour souffler vers l'extérieur plutôt que vers l'intérieur (évidemment fais attention à ne rien abimer à l'intérieur :mrgreen: ).

En tout cas 64° ça va, c'est un peu haut mais il n'y a pas de risque à l'utiliser ;)


Okey, je vais voir ça ! Merci.

Avatar de l’utilisateur
Kvelertak
Maillot jaune
 
Messages: 10325
Localisation: Et ça fait... ZUMBA CAFEW

Re: Informatique

Messagepar Samuel » 13 Nov 2017, 14:55

Petite question pour les programmeurs (python en particulier mais peut-être pas que) :
Sur Python, j'ai une liste de flottants que je multiplie par un scalaire et j'aimerais récupérer la liste des parties entières. Sauf que int(liste) ça ne marche. Et int(array) non plus d'ailleurs. Une idée pour le faire de manière simple et efficace ?

Exemple :
a = np.array([1.52 , 2.45 , 3.12])
k = 1000
produit = a*k

et j'aimerais récupérer : produit = [1520 , 2450 , 3120]

NB : numpy.trunc(liste) fonctionne mais renvoie une liste de flottants. Or moi je veux récupérer une liste d'entiers pour m'en servir comme d'une liste d'indices.

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar abz » 13 Nov 2017, 15:17

Il faut appliquer "int" à chaque élément du tableau, et non au tableau lui même, donc utiliser une boucle sur ce tableau.

Apparemment dans Python il y a une syntaxe simplifiée pour modifier simplement la valeur de chaque élément, donc j'imagine que ça ça doit faire l'affaire :
Code: Tout sélectionner
entiers = [int(x) for x in a]
produit = [x*k for x in a]

Avatar de l’utilisateur
abz
Maillot à pois
 
Messages: 3500

Re: Informatique

Messagepar Samuel » 13 Nov 2017, 15:22

Merci ! En effet, j'avais déjà vu cette syntaxe, mais je l'avais totalement oubliée :ok: Ca évitera "d'écrire" la boucle.

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar Panzer » 14 Nov 2017, 21:30

Panzer a écrit:Quelqu'un a une Box avec Bouygues ? Je vais probablement passer chez eux pour profiter de leur offre promo. Je pense que niveau connexion internet ADSL, j'aurais pas de changement en qualité par rapport à Free en ADSL ? :wtf

Je vais également changer d'opérateur téléphonique, je suis chez Bouygues en ce moment. J'attends les offres promo de SFR ou Orange pour changer. Des différences de qualité entre ses opérateurs ? :o

J'ai souscrit à Bouygues et je recevrai le matos lundi prochain.
J'ai fait aucune démarche, sauf payer le montant qu'ils m'ont demandé. Rien fait par rapport à Free.
Mais ils m'ont quand même couper toute connexion.

Un pote me dit que c'est normal mais je préfère checker avec vous :wtf

Avatar de l’utilisateur
Panzer
Directeur sportif
 
Messages: 22360
Localisation: Cycliste intègre et humain

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 10:47

Encore une petite requête python dont je n'ai pas trouvé la réponse sur internet...
J'ai un histogramme de la forme [1 4 5 6 9 12 15 ...] soit une seule ligne, dont les valeurs représentent des occurrences d'événements.
Typiquement ça pourrait représenter le nombre de tours gagnés par les coureurs français, avec en abscisse le numéro du coureur français. Et bien j'aimerais récupérer une liste de la forme [1 2 2 2 2 3 3 3 3 3 6 6 6 6 6 6 ...]. C'est-à-dire une liste qui renvoie autant de fois chaque numéro de coureur que ce numéro a d'occurences dans ma liste d'origine.
Autrement dit, ça revient à aplatir un histogramme.

J'ai pas trouvé de méthode efficace qui me renvoie un vecteur et qui n'implique pas 'utilisation d'une double boucle, bien trop coûteuse en mémoire à mon avis avec la longueur des listes que j'utilise (environ 10 000 éléments au max). Mais j'imagine qu'il doit exister une méthode pour faire ce que je veux, et le faire de manière optimale :wtf

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar abz » 15 Nov 2017, 11:22

Je suis pas sûr de bien comprendre ce que tu veux faire...

En gros, si t'a une liste de ce genre :
Code: Tout sélectionner
[
   1 => [2, 4, 6, 9]
   5 => [3]
]

Tu voudrais obtenir la liste suivante ?
Code: Tout sélectionner
[1, 1, 1, 1, 5]

Avatar de l’utilisateur
abz
Maillot à pois
 
Messages: 3500

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 11:24

J'ai du mal à lire ta syntaxe mais je ne crois pas que ce soit ça...
J'ai expliqué sur un autre forum un peu plus spécialisé et je pense que j'ai été plus clair là-bas :

Je dispose d'une liste sur python qui est en fait un histogramme. C'est-à-dire que c'est une liste qui enregistre des nombres d'occurences d'événements. Typiquement, elle a une tête comme ça : HIST = [0 0 0 1 2 4 3...]
Je dispose aussi de la liste des abscisses de cet histogramme. Disons que c'est ABSC = [1 2 3 4 5 6 7 ...]

J'aimerais récupérer un vecteur de dimension sum(HIST) dont les composantes sont les valeurs de ABSC écrites autant de fois que l'événement apparait. Dans notre exemple, on aurait VECT = [4 5 5 6 6 6 6 7 7 7].

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar Murungaru » 15 Nov 2017, 11:40

Pas sûr que tu puisse te passer d'une double boucle : une pour ta liste de base, l'autre pour construire avec à chaque itération ajouter x fois dans ta nouvelle liste ton numéro d'abscisse.

Code: Tout sélectionner
a = [0, 2, 4]
i = 1
b = []
for x in a :
     temp = [i] * x
     i = i + 1
     b.extend(temp)
>>> b
[2, 2, 3, 3, 3, 3]


Ici j'ai pas vu le source de extend mais bon j'imagine que ça itère. Après niveau perf ça dépend de ton nombre d'occurence max, s'il augmente avec la taille de ta liste. Si c'est pas le cas, ça reste une complexité linéaire.

Avatar de l’utilisateur
Murungaru
Jersey rojo
 
Messages: 7875

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 11:45

Murungaru a écrit:Pas sûr que tu puisse te passer d'une double boucle : une pour ta liste de base, l'autre pour construire avec à chaque itération ajouter x fois dans ta nouvelle liste ton numéro d'abscisse.

Code: Tout sélectionner
a = [0, 2, 4]
i = 1
b = []
for x in a :
     temp = [i] * x
     i = i + 1
     b.extend(temp)
>>> b
[2, 2, 3, 3, 3, 3]


Ici j'ai pas vu le source de extend mais bon j'imagine que ça itère.

Merci !
Bon déjà ça me résout un problème, à savoir que je ne connaissais pas extend. Plus précisément je ne connaissais pas sa différence avec append donc je n'arrivais pas à concaténer en gardant une seule liste.
Si je ne trouve pas de method qui le fait directement je passerai par là alors. C'était mon idée de base mais je trouve pas ça très joli étant donné que le tout est déjà dans une boucle for :diantre:
Modifié en dernier par Samuel le 15 Nov 2017, 11:47, modifié 1 fois.

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar abz » 15 Nov 2017, 11:46

Je fais rarement du python, donc je connais pas du tout toutes les fonctions, mais ça m'étonnerait aussi qu'il y en ait toute prête pour ça, donc t'aura du mal à te passer de boucles.
Par contre Murungaru je pense que tu as oublié d'utiliser ABSC, et ce n'est pas la peine de créer "temp" :

Code: Tout sélectionner
    i = 1
    VECT = []
    for x in HIST :
         b.extend(ABSC[i] * x)
         i = i + 1

Par contre, les listes ne commencent pas à 0 en python ?

Avatar de l’utilisateur
abz
Maillot à pois
 
Messages: 3500

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 11:55

abz a écrit:Par contre, les listes ne commencent pas à 0 en python ?

Si en effet.

Merci pour votre aide, je vais faire ça du coup. Je pense que votre syntaxe est quand même meilleur que ce que j'aurais fait. Et je verrais bien à l'usage si les temps de calcul sont trop longs. C'est un programme qui fait tourner un logiciel assez lourd donc je m'attends déjà à devoir le faire tourner un certain nombre d'heures :love:

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar Murungaru » 15 Nov 2017, 12:01

abz a écrit:Je fais rarement du python, donc je connais pas du tout toutes les fonctions, mais ça m'étonnerait aussi qu'il y en ait toute prête pour ça, donc t'aura du mal à te passer de boucles.
Par contre Murungaru je pense que tu as oublié d'utiliser ABSC, et ce n'est pas la peine de créer "temp" :

Code: Tout sélectionner
    i = 1
    VECT = []
    for x in HIST :
         b.extend(ABSC[i] * x)
         i = i + 1

Par contre, les listes ne commencent pas à 0 en python ?


Oui tout à fait c'était histoire de décomposer que j'ai utilisé temp ;)
Pour ABSC oui en fait je l'ai fait sur la base du premier message, mais si c'est juste 1 2 3 4 5 etc tous les un, autant s'en passer. Mais je suis pas sûr d'avoir bien saisis le truc.

Par contre à chaque fois que je repasse sur du python par contre j'oublie qu'on a pas le droit au "++" pour l'incrément :angel

Avatar de l’utilisateur
Murungaru
Jersey rojo
 
Messages: 7875

Re: Informatique

Messagepar abz » 15 Nov 2017, 12:03

D'ailleurs il vaut peut être mieux ajouter un "if x > 0" pour éviter de créer et concaténer un tableau vide, ce qui peut éventuellement être un peu plus lourd qu'un simple test :
Code: Tout sélectionner
i = 0
VECT = []
for x in HIST :
   if x > 0:
      b.extend([ABSC[i]] * x)
   i = i + 1


Murungaru a écrit:A chaque fois que je repasse sur du python par contre j'oublie qu'on a pas le droit au "++" pour l'incrément :angel

C'est clair que c'est incompréhensible que ça n'existe pas en python :mrgreen: Comme les +=, -=, *=, ...

Edit : par contre moi j'avais oublié les crochets autour de ABSC[i], pour que ça soit un tableau et non un entier :mrgreen:

Apparemment cette syntaxe ([x] * y) crée un tableau de pointeurs vers la même valeur x, donc si t'en modifie une ça modifiera les autres.
Code: Tout sélectionner
a = [2] * 5
a[1] = 3

Les 5 valeurs de a vaudront 3. Du coup il vaut peut être mieux utiliser la syntaxe utilisée plus haut :
Code: Tout sélectionner
i = 0
VECT = []
for x in HIST :
   if x > 0:
      b.extend([ABSC[i] for j in range(x)])
   i = i + 1

Avatar de l’utilisateur
abz
Maillot à pois
 
Messages: 3500

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 12:56

abz a écrit:Apparemment cette syntaxe ([x] * y) crée un tableau de pointeurs vers la même valeur x, donc si t'en modifie une ça modifiera les autres.
Code: Tout sélectionner
a = [2] * 5
a[1] = 3

Les 5 valeurs de a vaudront 3. Du coup il vaut peut être mieux utiliser la syntaxe utilisée plus haut :
Code: Tout sélectionner
i = 0
VECT = []
for x in HIST :
   if x > 0:
      b.extend([ABSC[i] for j in range(x)])
   i = i + 1

T'es sûr de ça ? Parce que quand je fais de la pré-allocation j'utilise cette syntaxe et je n'ai pas de souci (il me semble que c'est toujours mieux de pré-allouer une liste plutôt que de la construire terme à terme, non ?). Typiquement :
Code: Tout sélectionner
a=5*[0]

a[2]=2

print(a)
[0, 0, 2, 0, 0]

Ceci dit le problème des tableaux de pointeurs je l'ai rencontré il y a quelques jours mais je ne sais plus dans quelle situation :louche: Dans le doute je reprends la syntaxe que tu proposes.

Murungaru a écrit:Pour ABSC oui en fait je l'ai fait sur la base du premier message, mais si c'est juste 1 2 3 4 5 etc tous les un, autant s'en passer. Mais je suis pas sûr d'avoir bien saisis le truc.

Dans la plupart des cas que j'étudierai ABSC sera en effet juste une liste d'entiers de type range(X), mais ça pourrait être amené à changer.

abz a écrit:C'est clair que c'est incompréhensible que ça n'existe pas en python :mrgreen: Comme les +=, -=, *=, ...

+= et -= fonctionne pour l'incrémentation ;)

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar abz » 15 Nov 2017, 13:46

Samuel a écrit:T'es sûr de ça ? Parce que quand je fais de la pré-allocation j'utilise cette syntaxe et je n'ai pas de souci (il me semble que c'est toujours mieux de pré-allouer une liste plutôt que de la construire terme à terme, non ?).

Ah oui j'avais mal lu, en fait c'est juste si la valeur répétée est autre chose qu'un type simple, donc pour un entier c'est bon ;)
L'exemple était :
Code: Tout sélectionner
a = [[1,2,3]] * 3
print(a) # Output [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
a[0][1] = 5
print(a) # Output [[1, 5, 3], [1, 5, 3], [1, 5, 3]]

Du coup je comprend mieux pourquoi ils avaient pris une liste en exemple :mrgreen:


Samuel a écrit:+= et -= fonctionne pour l'incrémentation ;)

Ah j'avais un doute, mais vu que Murungaru ne l'avait pas utilisé, je m'étais dis que ça n'y était pas :angel

Avatar de l’utilisateur
abz
Maillot à pois
 
Messages: 3500

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 13:54

abz a écrit:
Samuel a écrit:T'es sûr de ça ? Parce que quand je fais de la pré-allocation j'utilise cette syntaxe et je n'ai pas de souci (il me semble que c'est toujours mieux de pré-allouer une liste plutôt que de la construire terme à terme, non ?).

Ah oui j'avais mal lu, en fait c'est juste si la valeur répétée est autre chose qu'un type simple, donc pour un entier c'est bon ;)
L'exemple était :
Code: Tout sélectionner
a = [[1,2,3]] * 3
print(a) # Output [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
a[0][1] = 5
print(a) # Output [[1, 5, 3], [1, 5, 3], [1, 5, 3]]

Du coup je comprend mieux pourquoi ils avaient pris une liste en exemple :mrgreen:


Ha oui en effet j'ai du rencontrer le problème en question en manipulant des listes ;)

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3

Re: Informatique

Messagepar Samuel » 15 Nov 2017, 16:16

Bon bon bon... Désolé de revenir avec mon petit problème mais je sèche depuis 2h sur mon petit bout de code et je commence à saturer :niais:
Je vous recopie mon bout de code qui est, si je ne m'abuse, celui que vous m'aviez donné à l'origine (j'ai aussi essayé avec l'autre syntaxe d'abz sans plus de succès).

La deuxième ligne et la troisième ligne c'est juste le calcul de mon histogramme, je ne sais pas si ça vous intéresse mais au cas où...
Ca a l'air de marcher pas trop mal sauf que la fonction me renvoie une liste de 11863 éléments, alors que la somme des valeurs de mon histogramme vaut 15 000. Je ne vois vraiment pas d'où ça peut venir.

Bon après je comprendrais tout à fait que vous ayez la flemme donc surtout ne vous sentez pas obligé hein :mrgreen:

Code: Tout sélectionner
def generation_time(filtre):
    abscisse=[float(x)*200/10000 for x in np.array(range(10000))]
    hist = [int(100*(np.exp(-x/35)-np.exp(-x/1))) for x in abscisse]
    hist2 = np.array(hist)*(15000/sum(hist))

    i = 0
    gen_distrib_list = []
    for x in hist2 :
         gen_distrib_list.extend([abscisse[i]] * int(x))
         i+=1
    return gen_distrib_list


PS : bon il semblerait que ce soit un problème d'arrondi... J'avais pensé à prendre la partie entière pour hist, mais quand je renormalise mon tableau évidemment je récupère des flottants en hist2... Il va falloir que je contourne ça.

Avatar de l’utilisateur
Samuel
Champion en devenir
 
Messages: 12283
Localisation: GRB<3


1544 messages
Retourner vers Culture générale

Qui est en ligne

Utilisateurs parcourant ce forum : Dugarry, friton01, loik29, Piepie33 et 22 invités