2016-04-30 3 views
1

Ich habe Formen von 2 numpy Arrays. Ich möchte prüfen, ob die Addition dieser Arrays möglich ist und die resultierende Form bestimmen.Numpy: Bestimmen Sie die Form nach der Sendung

Gibt es eine Möglichkeit, dies schnell zu tun und alle Randfälle abzudecken?

+0

Für ‚zusätzlich‘ müssen Sie die gleiche Form. Meinst du das Verketten der Arrays? – roadrunner66

+0

Nein. Ich brauche nicht dieselben Formen: np.array ([1,2]) + np.array ([[10,1], [11, 12]]) –

+0

@ roadrunner66: Klingt so, als hättest du nicht hörte von einem der großartigen Features von NumPy, [Broadcasting] (http://docs.scipy.org/doc/numpy-1.10.1/user/basics.broadcasting.html). – user2357112

Antwort

1

Wenn Sie die tatsächliche NumPy Objekte haben, könnten Sie NumPy Logik verwenden, um dies zu bestimmen (zusätzlich Rundfunk erfordert, siehe here):

def checkShapes(a, b): 
    try: 
    return (np.broadcast(a, b)).shape 
    except: 
    return (-1,) 
+0

Danke! Ein allgemeinerer Fall wäre jedoch perfekt. Gibt es eine Möglichkeit, ein falsches Array zu erstellen, ohne den Speicher tatsächlich zu verwenden, so dass ich np.broadcast verwenden kann? –

+0

Warum nehmen Sie eindimensionale Arrays im ersten Snippet an und warum machen Sie diesen seltsamen 'len' Check in der Sekunde? – user2357112

+0

@ user2357112 Mein Fehler, ich habe Array als eindimensional angesehen, aber wenn ich mir die Dokumente anschaue, kann es n Dimensionen haben. Was das seltsame if angeht, so sagen die Doktoren: "Unter gewissen Einschränkungen wird das kleinere Array über das größere Array übertragen, so dass sie kompatible Formen haben." –

Verwandte Themen