Wenn Sie mehrere Werte aus einer Liste in Python abrufen möchten, können Sie sie in Slices abrufen, wenn sie aufeinanderfolgend sind. Ich wusste jedoch nicht, wie ich sie abrufen kann, wenn sie nicht aufeinanderfolgend sind. Deshalb habe ich sie nachgeschlagen.
Es scheint, dass itemgetter
ab python2.5 oder höher verwendet werden kann, also werde ich versuchen, es zu verwenden.
Wenn Sie einen Index in der Liste übergeben, wird der Wert dieses Index zurückgegeben.
from operator import itemgetter
a = ("a", "b", "c", "d", "e")
print itemgetter(1,3)(a) # ('b', 'd')
Der Grund, warum ich dies tun wollte, ist, dass es schön wäre, wenn das Etikett durch maschinelles Lernen zurückgegeben würde, aber beim Extrahieren der Originaldaten konnte ich mir keine einfache Möglichkeit vorstellen, es zu schreiben. Zum Beispiel habe ich in einem Klassifikator, der zwischen Klein- und Großbuchstaben unterscheidet, wie folgt geschrieben, wenn ein Etikett zurückgegeben wird und nur Großbuchstaben daraus extrahiert werden.
from operator import itemgetter
import numpy
label_prediction = numpy.array([0,0,1,1,0,1])
data = ["a","b","C","D","e","F"]
label_match = numpy.where(label_prediction==1)[0]
print itemgetter(*label_match)(data)
Bitte lassen Sie mich wissen, ob es einen anderen guten Weg gibt.
Ich habe von S-Wakaba gelernt! Vielen Dank. Ich war pessimistisch, dass ich numpy nicht verwenden konnte, wenn es eine Zeichenkette war, aber ich konnte es normal verwenden. Viel schöner als Itemgetter.
import numpy
label_prediction = numpy.array([0,0,1,1,0,1])
data = ["a","b","C","D","e","F"]
print numpy.array(data)[label_prediction==1]
Es wäre hilfreich, wenn Sie mir einen besseren Weg nennen könnten, um aufzuschreiben, was Sie recherchiert haben. Ich möchte mir Notizen machen und meine Unwissenheit aufdecken.
Recommended Posts