2017-05-14 8 views
0

Ich gehe von C zu Python.Multidimensionales Array in Python initialisieren

Ich möchte ein Array von unterschiedlichen Längen initialisieren: map((2,3,(5,6,7)))

I jeder Eintrag eines Arrays wollen np.zeros((2,3)) eine Liste mit verschiedenen Längen sein.

würde ich die Python entspricht dem c mag:

for(ii=0; ii<N; ii++) { 
    dim[ii] = ii**2; 
    for(jj=0; jj<Z; jj++) { 
     map[jj][ii] = (long*) calloc(dim[ii], sizeof(long)); 
    } 
} 

ich einige Dinge ausprobiert habe, aber keiner ist, was ich brauche. Ich möchte später einfach auf die Daten zugreifen und mit Listen habe ich es nicht geschafft.

Danke!

+0

'np.zeros' benötigt eine definierte Größe, Sie können also nicht (soweit ich weiß) das mit variabler Länge verwenden. Kannst du einfach eine Liste von Listen mit unterschiedlichen Längen erstellen? Wird dies in etwas rechenintensiv verwendet? – OptimusCrime

+0

[Möglicherweise relevant] (http://stackoverflow.com/questions/9229897/how-can-i-store-a-list-within-a-numpy-2d-array). – sascha

+0

Ich bin kein C-Typ, können Sie einen Überblick über das gewünschte Ausgangsarray innerhalb 'n = 2 und z = 3' oder irgendein zufälliges' n' und 'z' hinzufügen? –

Antwort

0

Ich habe es geschafft, es zu tun:

>>> x=[[0]*3 for count in range(2)] 
>>> for ii in range(2): 
...  for jj in range(3): 
...   x[ii][jj]=[0]*(jj+1)**2 
... 
>>> x 
[[[0], [0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0], [0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]] 

Obwohl ich bin sicher, dass es einen besseren Weg, Danke!