2016-09-30 4 views
0

bekam ich eine Liste mehrere Arrays enthält, und ich schrieb die folgenden Codes versuchen Form zu sehen [0] dieser Arrays,Wie überprüft man die Form mehrerer Arrays in einer Liste?

for i in xrange(len(list)): 
    k = list[i].shape[0] 
    print k 

die Ausgänge korrekt waren, aber ich möchte Check diese Form [0 ], dh, wenn sie gleich sind, würde die Funktion fortgesetzt, andernfalls, wenn sie nicht die gleiche Zahl sind, bricht die Funktion. Wie macht man das? Fühlen Sie sich frei, mir Ratschläge zu geben, vielen Dank.

aktualisieren

habe ich eine Liste mit dem Namen, die 3 verschiedene Arrays 'ab', und verwendet, um Fehler und Ausnahmen Codes, um die Form zu überprüfen [0]:

ab = [np.array([[1,2,3],[1,2,3]]), 
     np.array([[1,2,3]]), 
     np.array([[1,2,3],[1,2,3],[0,1,2],[0,9,9]])] 

for i in xrange(len(ab)): 
k = ab[i].shape[0] 
print k 

try: 
    all(x.shape[0]==ab[0].shape[0] for x in ab) 
    print 'True' 
except ValueError: 
    print 'False' 

aber die Ausgänge waren:

2 
1 
4 
True 

die Ausgänge waren falsch, wo habe ich einen Fehler gemacht?

+0

So 'Liste [i]' wäre ein Array, nicht wahr? Wenn ja, wofür willst du seine Form [0] überprüfen? – Divakar

+2

'für i in xrange (len (liste))' ist nicht pythonisch. Verwenden Sie stattdessen 'for l in list'! –

+1

Es ist eine gute Übung, die Liste "liste" nicht zu benennen, da "liste" der Name eines nützlichen Built-in ist. Es ist ein Fehler, der darauf wartet, wenn Sie in einem Monat wiederkommen und Code hinzufügen, der den eingebauten Code benötigt. –

Antwort

5
all(x.shape[0]==list[0].shape[0] for x in list) 
2

Sie können ein set Verständnis verwenden, um eine Reihe von einzigartigen Formen dann prüfen, ob die Länge des Satzes zu schaffen, ist mehr als 1:

shapes = {arr.shape[0] for arr in my_list} 
if len(shapes) > 1: 
    # return None 

Oder als eine bessere Art und Weise versuchen, eine numpy anwenden Funktion auf dem Array, wenn sie nicht in gleicher Form wird es eine ValueError erhöhen:

try: 
    np.hstack(my_list) 
except ValueError: 
    # rasise exception or return None 
Verwandte Themen