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

Probleme mit array slice index

Beitragvon Troell » 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

Beitragvon 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

Beitragvon Troell » 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

Beitragvon 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

Beitragvon Troell » Freitag 29. Februar 2008, 18:31

Code: Alles auswählen

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

Beitragvon 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]])

Wer ist online?

Mitglieder in diesem Forum: Baidu [Spider], Bing [Bot], halobungie, martinjo