<jupyter_start><jupyter_text>Aufgaben zum Kapitel "Datentyp-Objekt: dtype"1. Definiere ein strukturiertes Array mit zwei Spalten. Die erste Spalte soll die ID eines Produktes enthalten, die sich als int32 darstellen lässt. Die zweite Spalte soll den Preis dieses Produktes enthalten.    Wie kann man die Spalte mit den Produkt-IDs ausgeben?    Wie kann man die erste Zeile ausgeben?    Wie kann man auf den dritten Artikel zugreifen, also den Artikels in der 3.  Zeile?<jupyter_code>import numpy as np

mytype = [('produktNr', np.int32), ('preise', np.float64)]

produkte = np.array([(34765, 603.76), 
                     (45765, 439.93),
                     (99661, 344.19),
                     (12129, 129.39)], dtype=mytype)

print(produkte[1])
print(produkte["produktNr"])
print(produkte[2]["preise"])
print(produkte)
print(produkte.shape)<jupyter_output>(45765, 439.93)
[34765 45765 99661 12129]
344.19
[(34765, 603.76) (45765, 439.93) (99661, 344.19) (12129, 129.39)]
(4,)<jupyter_text>2. Erzeuge ein Array mit der gleichen Länge, wie das eben erzeugte. Die Inhalte dieses Arrays sind Integers, die der Anzahl von verkauften Einheiten für die entsprechenden Produkt-IDs entsprechen. Berechnen Sie die Verkaufserlöse pro Item und die Gesamtsumme.<jupyter_code>verkaufszahlen = np.array([3, 5, 2, 1])

erlöse = produkte["preise"] * verkaufszahlen

print("Erlöse pro Item: ", erlöse)
print("Gesamterlös: ", erlöse.sum())<jupyter_output>Erlöse pro Item:  [1811.28 2199.65  688.38  129.39]
Gesamterlös:  4828.700000000001<jupyter_text>3. Definiere ein strukturiertes Array für Zeiteinträge mit Stunden, Minuten und Sekunden. Die Indizes sollen "h", "min" und "sec" lauten.<jupyter_code>time_type = np.dtype( [('h', int), 
                       ('min', int), 
                       ('sec', int)])

times = np.array([(11, 38, 5), 
                  (14, 56, 0),
                  ( 3,  9, 1)], dtype=time_type)
print(times)
print(times['h'])
print(times['min'])
print(times['sec'])<jupyter_output>[(11, 38, 5) (14, 56, 0) ( 3,  9, 1)]
[11 14  3]
[38 56  9]
[5 0 1]<jupyter_text>Aus der obigen dtype-Struktur können wir auch ein zweidimensionales Array erzeugen, in dem die Spalten den Stunden, Minuten und Sekunden entsprechen:<jupyter_code>np.column_stack((times['h'], 
                 times['min'], 
                 times['sec']))<jupyter_output><empty_output><jupyter_text>4. Füge zu den Zeiteinträgen aus der vorigen Aufgabe noch jeweils einen Temperaturwert hinzu.<jupyter_code>time_temp_type = np.dtype( np.dtype([('time', [('h', int), ('min', int), ('sec', int)]),
                                ('temperature', float)] ))

time_temp = np.array( [((11, 42, 17), 20.8), 
                       ((13, 19,  3), 23.2),
                       ((14, 50, 29), 24.6)], dtype=time_temp_type)
print(time_temp)
print(time_temp['time'])
print(time_temp['time']['h'])
print(time_temp['temperature'])<jupyter_output>[((11, 42, 17), 20.8) ((13, 19,  3), 23.2) ((14, 50, 29), 24.6)]
[(11, 42, 17) (13, 19,  3) (14, 50, 29)]
[11 13 14]
[20.8 23.2 24.6]<jupyter_text>5. Erzeugen eine csv-Datei, in der eine Zeile jeweils eine Zeit und einen Temperaturwert enthält,     z.B.        14:56:19 23.8        16.08:04 32.8<jupyter_code>with open("time_temp.csv", "w") as fh:
    for row in time_temp:
        zeit = [f"{el:02d}" for el in row[0]]
        zeit = ":".join(zeit)
        fh.write(zeit + " " + str(row[1]) + "\n")
        
!cat time_temp.csv<jupyter_output>11:42:17 20.8
13:19:03 23.2
14:50:29 24.6
{'fraction_non_alphanumeric': 0.1499143346659052, 'fraction_numerical': 0.09822958309537407, 'mean_word_length': 3.4062893081761008, 'pattern_counts': {'":': 1, '<': 20, '<?xml version=': 0, '>': 20, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '362879', 'license': 'MIT', 'n_tokens_mistral': 1592, 'n_tokens_neox': 1358, 'n_words': 356, 'path': '00_Original/NumpyTutorial_dtype_AUFGABEN.ipynb', 'repo_name': 'felixdittrich92/numerisches_python', 'size': '3502'}