Numpy mehrere Werte auswählen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
g123
User
Beiträge: 24
Registriert: Donnerstag 11. Januar 2018, 15:36

Dienstag 24. Juli 2018, 19:43

Hallo Leute,

ich verstehe anscheinend nicht wirklich wie man auf mehrere Werte in Numpy Array zugreift. Hier mal ein Beispiel:
Das Ergebnis von :

Code: Alles auswählen

import numpy as np

a = (3, 3, 3)
a = np.zeros(a)

a[:][:][:1] = 4

print(a)
ist bei mir:

Code: Alles auswählen

[[[4. 4. 4.]
  [4. 4. 4.]
  [4. 4. 4.]]

 [[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]

 [[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]]
Ich hätte jetzt gedacht Python würde in jedem 'Block', in jeder 'Zeile' die ersten zwei zahlen = 4 setzen.
Noch seltsamer ist, wenn ich folgenden Code benutze:

Code: Alles auswählen

a = (3, 3, 3)
a = np.zeros(a)

a[:1][:][:] = 4

print(a)
Bekomme ich exakt das gleiche Ergebnis und auch wenn ich a[ : ][ : 1][ : ] benutze. Kann mir das einer erklären ? Wo ist mein Denkfehler? Und wie würde ich folgendes Ergebnis bekommen:

Code: Alles auswählen

[[[4. 4. 0.]
  [4. 4. 0.]
  [4. 4. 0.]]

 [[4. 4. 0.]
  [4. 4. 0.]
  [4. 4. 0.]]

 [[4. 4. 0.]
  [4. 4. 0.]
  [4. 4. 0.]]]
Benutzeravatar
kbr
User
Beiträge: 949
Registriert: Mittwoch 15. Oktober 2008, 09:27

Dienstag 24. Juli 2018, 19:58

Die Indizierung funktioniert etwas anders, als Du denkst:

Code: Alles auswählen

a[:,:,:2] = 4
Benutzeravatar
ThomasL
User
Beiträge: 378
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Dienstag 24. Juli 2018, 20:00

probier mal

Code: Alles auswählen

a[:,:,:1] = 4
a[:1,:,:] = 4
a[:,:1,:] = 4
edit: argh, zweiter
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
Benutzeravatar
MagBen
User
Beiträge: 786
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Mittwoch 25. Juli 2018, 10:21

Schau dir das mal an
http://www.labri.fr/perso/nrougier/teac ... l#creation

Das Auswählen von Elementen in Numpy-Arrays (slicing) wird dort sehr gut mit Bildern erklärt.
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten