2017-03-05 8 views
0

Kann mir bitte jemand helfen? Ich versuche, den Minimalwert jeder Zeile zu erhalten und jede Spalte dieser MatrixMindestwert in jeder Zeile und jeder Spalte einer Matrix - Python

matrix =[[12,34,28,16], 
     [13,32,36,12], 
     [15,32,32,14], 
     [11,33,36,10]] 

So zum Beispiel: Ich würde mein Programm will aus drucken, dass 12 der Minimalwert der Zeile 1 ist und so weiter.

+0

können Sie zeilenweise und spaltenweise iterieren. und Max und Min für jede Zeile und Spalte erhalten. Versuchen Sie zuerst, min für jede Zeile zu erhalten, dann auch max. Dann mach es spaltenweise. ATB :) –

Antwort

1

Verwenden Sie numpy.

>>> import numpy as np 
>>> matrix =[[12,34,28,16], 
...   [13,32,36,12], 
...   [15,32,32,14], 
...   [11,33,36,10]] 
>>> np.min(matrix, axis=1) 
array([12, 12, 14, 10]) 
>>> np.min(matrix, axis=0) 
array([11, 32, 28, 10]) 
3

Lasst uns die Aufgabe Aussage wiederholen: „den Minimalwert von jede Zeile erhalten und von jede Spalte dieser Matrix“.

Okay, also, wenn die Matrix n Reihen hat, sollten Sie n Minimalwerte erhalten, eine für jede Zeile. Klingt interessant, oder? Also, der Code sieht so aus:

result1 = [<something> for row in matrix] 

Nun, was müssen Sie mit jeder Zeile tun? Rechts finden Sie den Mindestwert, der super einfach:

result1 = [min(row) for row in matrix] 

Als result, finden Sie eine Liste von n Werte erhalten, so wie erwartet.


Warten, bis jetzt haben wir gefunden nur das Minimum für jede Zeile, aber nicht für jede Spalte, ist dies so tun lassen, wie gut!

Vorausgesetzt, Sie verwenden Python 3.x, können Sie einige ziemlich erstaunliche Sachen tun. Zum Beispiel können Sie eine Schleife über Spalten leicht:

result2 = [min(column) for column in zip(*matrix)] # notice the asterisk! 

Der Stern in zip(*matrix) macht jede Zeile von matrix ein separates Argument von zip ‚s, wie folgt aus:

zip(matrix[0], matrix[1], matrix[2], matrix[3]) 

Das sieht nicht sehr lesbar und ist abhängig von der Anzahl der Zeilen in matrix (im Grunde müssen Sie sie hart-Code), und der Stern lässt Sie viel sauberer Code schreiben.

zip kehrt Tupeln und die i ten Tupel enthält die i ten Werte von alle die Zeilen, so sind diese Tupel tatsächlich die Spalten der Matrix gegeben.

Nun, Sie können diesen Code ein bisschen hässlich finden, möchten Sie vielleicht die gleiche Sache in einer prägnanteren Art und Weise schreiben. Sicher genug, können Sie einige funktionale Programmierung Magie verwenden:

Diese beiden Ansätze sind absolut gleichwertig.

+0

Vielen Dank für Ihre Erklärung! Ich schätze es sehr.:) –

+0

@ S.Troy, du bist immer willkommen! – ForceBru

Verwandte Themen