2017-12-11 2 views
2

Ich bin neu in numerische Berechnung mit numpy. Ich habe Schwierigkeiten, Arrays mit mehr als zwei Dimensionen zu verstehen. Gibt es eine Möglichkeit, ein mehrdimensionales Array zu interpretieren? Beispiel:Interpretieren numpy mehrdimensionalen Array

>>> import numpy as np 
>>> arr1 = np.arange(24).reshape(2,3,2,2) 
>>> arr1 
array([[[[ 0, 1], 
     [ 2, 3]], 

     [[ 4, 5], 
     [ 6, 7]], 

     [[ 8, 9], 
     [10, 11]]], 


     [[[12, 13], 
     [14, 15]], 

     [[16, 17], 
     [18, 19]], 

     [[20, 21], 
     [22, 23]]]]) 

Jede Erklärung, Bezug auf Intuition bauen? Bearbeitet: Ich wollte wissen, wie die Ausgabe von .Shape mit der Ausgabe von zu interpretieren. d. h. im obigen Beispiel (2,3,2,2) was ist die rechte 2, die sich auf oder 3 oder andere bezieht 2. Wie geht numpy damit um?

+0

Sehen Sie, ob dies hilft - https://stackoverflow.com/a/41507480/. – Divakar

+0

Könnte auch einen Blick darauf werfen, was ein [Tensor] (https://en.wikipedia.org/wiki/Tensor) ist (Haben Sie keine Angst vor der hässlichen Mathematik, zu Ihrem Zweck können Sie sich diese als Erweiterung vorstellen von Matrizen zu mehr Dimensionen) – GPhilo

+0

Was versteht man nicht - die Ausgabe, die Daten oder das Konzept? – kazemakase

Antwort

0

Dies ist keine direkte Antwort, aber als ich anfing, mit mehrdimensionalen Arrays zu arbeiten, war meine größte Schwierigkeit, zu visualisieren, worum es bei der großen langen Streaming-Liste und den Klammern ging. Ich hatte ein Bild davon, wie ein 3D- und 4D-Array aussah, aber die aktuellen Darstellungen stimmten nicht mit dem überein, was ich "abgebildet" hatte. Um mir beim Betrachten der Datenstrukturen zu helfen, schrieb ich ein paar Funktionen, um die Struktur in eine Form zu bringen, die ich verstehen konnte.

Meine Frage an Sie ist dann ... machen Sie eine der folgenden Präsentationen, damit Sie die Struktur besser verstehen oder visualisieren können? Ich kann Support-Code in einer Bearbeitung bereitstellen, wenn einige davon nützlich sind.

arr1 = np.arange(24).reshape(2,3,2,2) 

Sample array... 
-shape (2, 3, 2, 2), ndim 4 
------------------------- 
-(0, + (3, 2, 2) 
    . 0 1 4 5 8 9 
    . 2 3 6 7 10 11 

------------------------- 
-(1, + (3, 2, 2) 
    . 12 13 16 17 20 21 
    . 14 15 18 19 22 23 

Oder Präsentation Option 2

Alternate format 
Main array... 
shape: (2, 3, 2, 2) 
[0,...] (3, 2, 2) 
    .[[[ 0 1] 
    . [ 2 3]] 
    . [[ 4 5] 
    . [ 6 7]] 
    . [[ 8 9] 
    . [10 11]]] 
[1,...] (3, 2, 2) 
    .[[[12 13] 
    . [14 15]] 
    . [[16 17] 
    . [18 19]] 
    . [[20 21] 
    . [22 23]]] 

Leider Ihre Frage nicht in der Lage sein direkt zu beantworten, aber oft die ‚direkte‘ Antwort ist nicht das, was notwendig ist wirklich an die Wurzel Problem zu erhalten,

+0

Ich denke, die Präsentation 1 wird helfen, gefolgt von der zweiten. –

Verwandte Themen