Menu
CoddyTech

Indizieren und Slicing

Teil des Abschnitts Daten und Diagramme der Machine Learning-Journey von Coddy. Lektion 8 von 60.

Arrays werden wie Listen ab 0 indiziert. Fünf Tage Klavierübung in Minuten:

practice = np.array([20, 0, 35, 15, 40])
print(practice[0])    # erstes Element
print(practice[-1])   # letztes Element
print(practice[1:4])  # Positionen 1 bis 3

Dies gibt Folgendes aus:

20
40
[ 0 35 15]

Ein 2D-Array verwendet eine Zeile und eine Spalte in einem Klammerpaar, zuerst die Zeile. Jede Zeile von stock steht für ein Geschäft, jede Spalte für ein Produkt:

Ein Raster mit 3 Zeilen und 4 Spalten mit Zahlen; die Zelle in Zeile 1, Spalte 2 mit dem Wert 4 ist am dunkelsten schattiert, und die gesamte Spalte 3 mit den Werten 6, 3 und 8 ist schattiert

stock = np.array([[5, 8, 2, 6], [9, 1, 4, 3], [7, 0, 6, 8]])
print(stock[1, 2])  # ein einzelner Wert
print(stock[0])     # eine ganze Zeile
print(stock[:, 3])  # eine ganze Spalte

Dies gibt Folgendes aus:

4
[5 8 2 6]
[6 3 8]

In der Zeilenposition bedeutet ein Doppelpunkt jede Zeile und ein Slice wie 0:2 einige davon. Also ist data[:, column] ein Merkmal für jede Stichprobe.

challenge icon

Aufgabe

Einfach

Der Bericht eines Hotels ist falsch. bookings enthält eine Zeile pro Woche und eine Spalte pro Tag, von Montag bis Sonntag. Das Programm liest eine Woche und einen Tag ein, jeweils ab 1 gezählt.

Jede Zeile enthält einen Fehler. Korrigiere sie entsprechend den Beschriftungen:

  • Week: die gesamte Woche
  • Weekend: ihre letzten beiden Tage, ein Slice
  • Day: dieser Tag, jede Woche
  • Booked: genau dieser eine Tag

Für Woche 3, Tag 5:

Week 3: [11 12 13 17 20 24 26]
Weekend: [24 26]
Day 5: [18 19 20 21]
Booked: 20

Probier es selbst

import numpy as np

# Gebuchte Zimmer in einem kleinen Hotel: eine Zeile pro Woche (Wochen 1 bis 4),
# eine Spalte pro Tag (Tage 1 bis 7, Montag bis Sonntag)
bookings = np.array([
    [12, 15, 14, 16, 18, 25, 27],
    [10, 13, 15, 14, 19, 26, 28],
    [11, 12, 13, 17, 20, 24, 26],
    [9, 14, 16, 15, 21, 27, 29],
])
week = int(input())
day = int(input())

# Der Bericht gibt falsche Zahlen aus: Korrigiere die folgenden Zeilen
row = bookings[week]
print(f"Week {week}: {row}")
print(f"Weekend: {row[5:6]}")
print(f"Day {day}: {bookings[day - 1]}")
print(f"Booked: {bookings[day - 1, week - 1]}")
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Daten und Diagramme

Übe selbstständig: Online-Python-Compiler