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

Freitag 29. Februar 2008, 17:11

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

Freitag 29. Februar 2008, 17:40

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

Freitag 29. Februar 2008, 18:01

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

Freitag 29. Februar 2008, 18:26

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

Freitag 29. Februar 2008, 18:31

Code: Alles auswählen

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

Samstag 1. März 2008, 00:53

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