trouver le max d'une colonne dans un tableau
def maxvalues():
for n in range(1,15):
dummy=[]
for k in range(len(MotionsAndMoorings)):
dummy.append(MotionsAndMoorings[k][n])
max(dummy)
L = [x + [max(dummy)]] ## to be corrected (adding columns with value max(dummy))
## suggest code to add new row to L and for next function call, it should save values here.
j'ai un tableau de taille (k, x n) et j'ai besoin de ramasser le max des valeurs de la première colonne de ce tableau. Veuillez indiquer s'il existe un moyen plus simple d'autre que ce que j'ai essayé? et mon principal objectif est d'ajouter à L dans les colonnes plutôt que de lignes. Si j'ai simplement ajouter, il est l'ajout de valeur à la fin. J'aimerais que cela soit fait dans les colonnes de la ligne 0 dans L, parce que je vais appeler cette fonction à nouveau et ajouter une nouvelle ligne à L et de faire de même. S'il vous plaît suggérer.
- Si vous pouvez utiliser
numpy
la commande est simplementnumpy.max(..)
. Vous pouvez définir l'axe max a pris le dessus. - quel est l'avantage de numpy si j'utilise ici? je suis peu nouveau pour de programmation python.? je voudrais ajouter le max(dummy) et l'ajouter à la colonne de la ligne 0 de L. Pourriez-vous s'il vous plaît suggérer ce que les changements que je dois faire dans ce programme.? Merci
- Svp préciser ce qu'est exactement votre entrée et votre sortie doit ressembler à
numpy
est un très commun numérique paquet, vous pouvez utiliser un simplemax
fonction plutôt que d'écrire votre propre. Depuis qu'il est écrit en C, il est beaucoup plus rapide qu'une boucle Python pour votre propre max.- J'ai trié dans peu de temps après que j'ai posté. Je voulais voir les différents aspects pour atteindre le même. Voici ce que j'ai codé et son bon fonctionnement.
final_values=[] def maxvalues(): values=[Tp+1] for n in range(1,15): dummy=[] for k in range(len(MotionsAndMoorings)): dummy.append(MotionsAndMoorings[k][n]) if n>1 and n<7: val=abs(max(dummy)-min(dummy)) else: val=max(dummy) values.append(val) final_values.append(values)
Vous devez vous connecter pour publier un commentaire.
Un exemple avec un aléatoire d'entrée de tableau, qui montre que vous pouvez prendre le
max
dans un axe à l'autre facilement avec une seule commande.De sortie:
Suggestions pour votre code
Tout d'abord, il n'est pas très pratique pour accéder à des variables globales dans une fonction. Cela fonctionne, mais il n'est pas considéré comme un bon style. Ainsi, au lieu de l'aide:
vous devriez le faire avec un argument:
La prochaine étrange, c'est que vous semblez exlude la première ligne de votre tableau:
Je pense que c'est involontaire. Le premier élément de la liste a de l'index
0
et pas1
. Donc, je suppose que tu voulais écrire:ou encore mieux pour arbitraire longueurs:
Des solutions de rechange pour votre itérations
Mais ce ne serait pas très intuitif parce que le
max
fonction implémente déjà quelques très belles mot-clé (lekey
) de sorte que vous n'avez pas besoin de parcourir tout le tableau:ce sera le retour de la ligne où le i-ème élément est maximale (il vous suffit de définir vos voulais colonne de cet élément). Mais le maximum sera de retour l'ensemble de la ligne si vous avez besoin d'extraire juste la i-ème élément.
Afin d'obtenir une liste de tous vos maximums pour chaque colonne que vous pouvez faire:
Pour votre
L
je ne suis pas sûr de ce que c'est, mais pour que vous devriez sans doute aussi le passer en argument à la fonction:mais depuis je ne sais pas ce
x
etL
sont censés être je ne vais pas aller plus loin dans cette. Mais il semble que vous souhaitez pour que les colonnes deMotionsAndMoorings
sur des lignes et des lignes et des colonnes. Si oui, vous pouvez le faire avec:c'est une compréhension de liste qui convertit une liste comme:
à un "inverted" colonne/rangée liste:
Autres emballages
Mais comme roadrunner66 déjà dit, parfois, il est plus facile d'utiliser une bibliothèque comme
numpy
oupandas
qui a déjà très avancée et rapide des fonctions qui font exactement ce que vous voulez et sont très faciles à utiliser.Par exemple de convertir une liste python à un tableau numpy simple par:
vous obtenir le maximum de colonnes en utilisant:
vous n'avez même pas besoin de le convertir à une
np.array
à utilisernp.max
ou la transposer (faire des lignes et des colonnes et des colonnes de lignes):J'espère que cette réponse n'est pas à non structuré. Certaines pièces sont des suggestions à votre fonction et certains sont des solutions de rechange. Vous devez choisir les pièces que vous avez besoin et si vous avez des problèmes avec elle, il suffit de laisser un commentaire ou poser une autre question. 🙂