Np.arrays

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
Hans123
User
Beiträge: 3
Registriert: Donnerstag 7. Januar 2021, 13:05

Hallo,
bin dabei während Corona Python zu lernen, bin aber noch absoluter Anfänger.
Ich habe einen numpy array, welchen ich mit einer for i in Range... Schleife durchlaufe.
Jetzt will ich aber nicht jede Zeile ansprechen , sondern nur den ersten Buchstaben jeder Zeile.
Bei nparray [i,0] in der Schleife funktioniert
Danke für die Hilfe
Hans
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Was ist denn deine Frage? Was für Buchstaben? Wie sieht dein Code aus, was macht er und was erwartest du, dass er machen sollte?
Grundsätzlich: Meistens ist es falsch Numpy-Arrays oder Pandas-DataFrames in einer Schleife zu durchlaufen. In der Regel will man die entsprechenden Funktionen verwenden.
Tipp: Bevor du dich Numpy widmest, solltest du unbedingt das Grundlagentutorial durcharbeiten und verstehen https://docs.python.org/3/tutorial/
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

willst du auf so etwas raus:

Code: Alles auswählen

import numpy as np

ROWS = 3
COLUMN = 2

test_array = np.array([[1,2,3],[4,5,6]]) 
test_array.shape = (ROWS, COLUMN)

print(test_array)

for row in range (ROWS):
    print(test_array[[row], [0]])
Bis zum ersten 'print' wird ein Array erstellt. Die Ausgabe sieht so aus:
[[1 2]
[3 4]
[5 6]]

Dann willst du aus jeder Reihe den ersten Index? Das wäre dann die Ausgabe des zweiten 'prints':
[1]
[3]
[5]

Ist dass das was du gesucht hast?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

@Dennis89: Warum erstellst du zuerst ein Numpy Array, um dann seine shape zu ändern? Warum erstellst du nicht direkt das richtige Array? Bei der Frage vom Threadersteller sehe ich nichts, das darauf hindeutet so etwas machen zu wollen.
Warum iterierst du in der for-Schleife über einen Index? Das ist in Python eher unüblich und ohne geht es hier doch auch

Code: Alles auswählen

for row in test_array:
...
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo @ Zizibee

stimmt darüber habe ich gar nicht nachgedacht. Hatte den Array-Code so mal abgespeichert gehabt und einfach für das Beispiel übernommen.
Er schrieb:
Jetzt will ich aber nicht jede Zeile ansprechen , sondern nur den ersten Buchstaben jeder Zeile.
Das habe ich dann so interpretiert, wie die Ausgabe meines Beispiels zeigt. Vielleicht kann er sich nochmals genauers dazu äußern.

Den Index habe ich genommen, da mir mit deinem Ansatz für 'row' der Inhalt der ganzen Reihe ausgegeben wird und ich dachte dass das hier nicht gewünscht ist.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Hans123
User
Beiträge: 3
Registriert: Donnerstag 7. Januar 2021, 13:05

Hallo danke für die Antworten,

in meinem Array stehen Strings und keine int.
Mein Ansatz war so ähnlich wie der oben genannte.
Der versucht den ersten Buchstaben über den Index 0 des Strings anzusprechen.
Habe gerade gemerkt, dass der Daten Typ ein tupel ist, macht das einen Unterschied.
Dachte lesend kann ein Zugriff auf Tupel erfolgen.
Danke Hans
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hans123: Hol mal ein bisschen weiter aus was Du eigentlich machen willst, denn Zeichenketten in einem Numpy-Array hört sich erst einmal falsch an. Warum machst Du das?

Welcher Datentyp ist ein Tupel?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Hans123
User
Beiträge: 3
Registriert: Donnerstag 7. Januar 2021, 13:05

Danke an alle.
Hat geklappt
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

Mich würde interessieren, was denn jetzt genau das Problem war und wie du es gelöst hast?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

@Dennis89: Man kann ja auch ohne Index auf das erste Element von row zugreifen

Code: Alles auswählen

for row in test_array:
    print(row[0])
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

@Zizibee Danke, daran habe ich nicht gedacht.
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten