Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/02/2007, à 18:27

laroche1

Extraction valeur min et max d'une colonne?

Rebonjour
J'ai un petit soucis, j'aimerais extraire la valeur la plus petite et la valeur la plus grande d'une colonne de chiffres J'ai utilisé minmax or je ne peux pas prendre les valeurs que cette fonction me donne or je ne sais pas comment faire! si vous avez des idées, elles seront les biens venues!

Merci

Dernière modification par laroche1 (Le 28/02/2007, à 19:56)

Hors ligne

#2 Le 28/02/2007, à 22:43

kaworu

Re : Extraction valeur min et max d'une colonne?

Salut !
Comme tu dis pas quel langage ni quelle est la source, je t'ai fais un exemple en Ruby (parce que Ruby c'est bon mangez-en) avec un fichier texte :
fichier texte

12
102
421
24
21
2
4
214
1241
4
1
24
1
3
543
512
4
456
23
66364777
2
356
347
7
47
47
4845832

code ruby

#!/usr/bin/ruby

a = Array.new
open(ARGV[0]) do |f|
  f.read.to_a.each { |i| a << i.chomp.to_i }
end
puts "le max est #{a.max}, le min est #{a.min}"

résultat

alex@gentoo ~ $ ./minmax.rb fichier 
le max est 66364777, le min est 1

"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#3 Le 01/03/2007, à 04:09

xilef

Re : Extraction valeur min et max d'une colonne?

Le python c'est meilleur wink


.felix

Hors ligne

#4 Le 01/03/2007, à 12:00

laroche1

Re : Extraction valeur min et max d'une colonne?

C'est du csh
Dans un fichier, j'ai 3colonnes (latitude, longitude et champ magnétique) de valeurs  que je peux ouvrir avec Xemacs.
Dans un autre fichier je demande qu'il me trace le champ magnétique en fonction de la latitude et longitude


mon code pour tracer mes cartes , où je veux introduire min et max
Code:

!/bin/csh

#je vais essayer d'extraire dans les fichiers .vec toutes les donnees de la region d'apollinaris patera

/* petit fichier permettant de me tracer les composantes du champ magnetique que l'on a pu predire!*/
set width = 5
  set lon_min = -10
  set lon_max = 10
  set lat_min = -10
  set lat_max = 10
set region = -R$lon_min/$lon_max/$lat_min/$lat_max


awk '{print$1,$2,$4}' calcul_dipole2.vec >! dipole2_br.vec

makecpt -Cno_green -T-1500/1500/500 -Z >! color1.cpt  ==> la à la place de 1500 j'aimerais le remplacer par un truc qui a chaque fois que je lance ça pour une autre zone d'etude,  ça me donne les valeur min et max !

mon fichier dipole2_br.vec ==> provient d'un code qui me calcule le champ Br pour une zone en latitude de -10 10 et -10 10 en longitude
Code:

-10.000000 -10.000000 4.933323784
-10.000000 -9.000000 5.367579746
-10.000000 -8.000000 5.735052237
-10.000000 -7.000000 5.980566054
-10.000000 -6.000000 6.037799353
-10.000000 -5.000000 5.836437190
-10.000000 -4.000000 5.315204053
-10.000000 -3.000000 4.439723355
-10.000000 -2.000000 3.220808505
-10.000000 -1.000000 1.725745953
-10.000000 0.000000 0.075055400
-10.000000 1.000000 -1.578019364
-10.000000 2.000000 -3.079919733
-10.000000 3.000000 -4.309267789
-10.000000 4.000000 -5.197595565
-10.000000 5.000000 -5.732847792
-10.000000 6.000000 -5.948314683
-10.000000 7.000000 -5.904461521
-10.000000 8.000000 -5.671095180
-10.000000 9.000000 -5.314292932
-9.000000 -10.000000 5.969985182
-9.000000 -9.000000 6.607356817
-9.000000 -8.000000 7.187623618
-9.000000 -7.000000 7.635294200
-9.000000 -6.000000 7.852688403
-9.000000 -5.000000 7.728076196
-9.000000 -4.000000 7.154633830
-9.000000 -3.000000 6.060325627
-9.000000 -2.000000 4.442303565
-9.000000 -1.000000 2.391927960

Hors ligne

#5 Le 02/03/2007, à 21:59

JoelS

Re : Extraction valeur min et max d'une colonne?

laroche1 a écrit :

C'est du csh

Bon ben déjà, passes en Bourne Shell ou un dérivé, car le Csh est moins poussé pour faire de la programmation (y'a quelque part un vieux post Usenet qui explique bien pourquoi).

Ensuite, moi, j'utiliserais carrément awk pour faire ça. C'est probablement le mieux adapté:

awk 'BEGIN{min=0;max=0}{print $1,$2,$4; if ($4<min){min=$4};if($4>max){max=$4}}END{print min,max}';

Bon je fais ça de mémoire, ça fait longtemps que j'ai pas programmé en awk.

Hors ligne