2017-11-27 5 views
0

Ich habe ein zweidimensionales Array, dessen Elemente aus einer Textdatei gelesen wurden. Für eine beliebige Anzahl von Elementen tritt ein Pfundzeichen (#) bei twod_array[n][0] auf. Für jedes Array in der zweiten Dimension, das nicht mit einem Pfundzeichen beginnt, möchte ich eine Berechnung durchführen. Kann mir jemand helfen? Ich habe versucht, numpy.split, aber ich denke, dass meine Syntax falsch ist. Hier ist das grobe Format des Arrays:Auswählen von Zeilen im Array basierend auf dem Wert

twod_array = [ 
    ['#', author], ['#', <more strings>], [23, 345000, 234, 345], 
    [<more numbers>], [<more numbers>] 
    ['#', <more strings>], [<more numbers>], [<more numbers>] 
] 
+0

Kann Code-Schnipsel setzen? –

+0

Sie fragen, "kann mir jemand helfen?" Aber Sie beschreiben nicht, wofür Sie Hilfe benötigen ... welche Berechnung möchten Sie durchführen? Welchen Code hast du geschrieben? Unter [Wie stelle ich eine gute Frage?] (Https://stackoverflow.com/help/how-to-ask) finden Sie einige Richtlinien, wie Sie Ihren ersten Beitrag verbessern können. – chb

Antwort

0

Dies ist wirklich schlecht erklärt. Ich habe verstanden, dass Sie eine Liste in Scheiben schneiden wollen (wir nennen sie Listen auf Python, nicht Arrays) und verwenden ein Trennzeichen, um zu bestimmen, wo diese Scheibe beginnen und enden soll. Das Starttrennzeichen ist das erste Element in dieser Liste, wenn es mit # beginnt und das Endtrennzeichen das nächste Element ist, das mit demselben Symbol/tag/hashtag/was auch immer beginnt.

1: Zuerst müssen Sie Ihre Liste beheben, stellen Sie sicher, dass die Saiten Saiten sind und es gibt Komma betwen Bestellung:

array = [ 
    ["author"], 
    ["# something put here"], 
    [23, 345000, 234, 345], 
    ["more numers"], 
    ["more numers"], 
    ["# something put here"], 
    ["more numers"], 
    ["more numers"] 
    ] 

2: Dann Sie den Index derer finden wollen Zeilen, die Sie als Trennzeichen verwenden.
Hinweis: Zur Vereinfachung wird im nächsten Code davon ausgegangen, dass Sie immer nur 2 Zeilen haben, beginnend mit .

start = end = None # Create empty variables 
for index, item in enumerate(array): # Loop that iterates index and data 
    if str(item[0]).startswith("#"): # If data on first item starts with # 
     if start is None: # If start variable is unused yet 
      start = index + 1 # This is the start index 
     else: # If start variable is already used 
      end = index # This is the end index 

3: Jetzt, da wir wissen, wo und starten, wo sie bis zum Ende können wir nur unsere Liste in Scheiben schneiden die Indizes start und end für ihn verwenden. Wir schaffen eine neue Liste für diese:

my_sliced_array = array[start:end] 

Bonus: Fühlen Sie sich frei, die nächsten Drucke zu verwenden, um das Ergebnis des Codes zu testen und sehen:

print("printing from {} to {}".format(start, end)) 
print(my_sliced_array) 
Verwandte Themen