Probleme mit array slice index

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Troell
User
Beiträge: 8
Registriert: Dienstag 14. August 2007, 14:39

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
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]])
Troell
User
Beiträge: 8
Registriert: Dienstag 14. August 2007, 14:39

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
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.
Troell
User
Beiträge: 8
Registriert: Dienstag 14. August 2007, 14:39

Code: Alles auswählen

a=numarray.reshape(numarray.arange(25), (5,5))
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]])
Antworten