Seite 1 von 1

Probleme mit array slice index

Verfasst: Freitag 29. Februar 2008, 17:11
von Troell
Was mach ich falsch?

Ich möchte ein sub-array aus einem Array "auschneiden".

Code: Alles auswählen

a
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, 24]])
>>> a[1:3,1:3]
array([[ 0,  1,  2],
       [ 5,  6,  7],
       [10, 11, 12]])
>>> a[1:4,1:4]
array([[ 0,  1,  2,  3],
       [ 5,  6,  7,  8],
       [10, 11, 12, 13],
       [15, 16, 17, 18]])
>>> a[2:4,2:4]
array([[ 0,  1,  2,  3],
       [ 5,  6,  7,  8],
       [10, 11, 12, 13],
       [15, 16, 17, 18]])
Jedoch fängt numarray immer wieder bei index 0 an.

Code: Alles auswählen

b
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> b[6]
7
>>> b[-4]
7
>>> b[-4:10]
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> b[3:7]
array([1, 2, 3, 4, 5, 6, 7])

Was mache ich falsch?


Vielen Dank,
Troell

Verfasst: Freitag 29. Februar 2008, 17:40
von BlackJack
Zeig mal ein minimales komplettes Stückchen Quelltext mit dem Problem. Bei mir sieht's nämlich anders aus:

Code: Alles auswählen

In [8]: a
Out[8]:
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, 24]])

In [9]: a[1:3,1:3]
Out[9]:
array([[ 6,  7],
       [11, 12]])

Verfasst: Freitag 29. Februar 2008, 18:01
von Troell
Das ist der komplette Quelltext. Ich hatte es einfach in die Konsole eingegeben.

Benutzt du für deine arrays numarray oder numpy?

Ich benutze numarray.

Woran könnte dieses ungewöhnliche Verhalten liegen?


MfG,
Troell

Verfasst: Freitag 29. Februar 2008, 18:26
von BlackJack
Ich habe es mit `numarray` ausprobiert. Das kann aber nicht der ganze Quelltext sein, denn irgendwie muss `a` ja auch zu diesem Objekt gekommen sein. Ich hab's einfach eingetippt bzw. per Kopieren und Einfügen übernommen.

Verfasst: Freitag 29. Februar 2008, 18:31
von Troell

Code: Alles auswählen

a=numarray.reshape(numarray.arange(25), (5,5))

Verfasst: Samstag 1. März 2008, 00:53
von BlackJack
Den Fehler kann ich nicht reproduzieren:

Code: Alles auswählen

In [13]: import numarray

In [14]: a = numarray.reshape(numarray.arange(25), (5, 5))

In [15]: a[1:3, 1:3]
Out[15]:
array([[ 6,  7],
       [11, 12]])