2017-03-15 4 views
0

Ich habe ein Tupel mit vier Spalten/Features und möchte die Zeilen basierend auf dem Wert einer Spalte filtern.Filtern eines Tupels a Python

score =[a for a in tup if a[1] == 0.1]

Der Ausgang ist print(score)

[array([ -2.41888055e-01, 1.00000000e-02, 1.00000000e-08, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 2.39502662e-08, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 5.73615251e-08, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 1.37382380e-07, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 3.29034456e-07, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 7.88046282e-07, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 1.88739182e-06, 
    1.00000000e-05]), array([ -2.41888054e-01, 1.00000000e-02, 4.52035366e-06, 
    1.00000000e-05]), array([ -2.41888054e-01, 1.00000000e-02, 1.08263673e-05, 
    1.00000000e-05]), array([ -2.41888053e-01, 1.00000000e-02, 2.59294380e-05, 
    1.00000000e-05]), array([ -2.41888050e-01, 1.00000000e-02, 6.21016942e-05, 
    1.00000000e-05]), array([ -2.41888043e-01, 1.00000000e-02, 1.48735211e-04, 
    1.00000000e-05]), array([ -2.41888026e-01, 1.00000000e-02, 3.56224789e-04, 
    1.00000000e-05]), array([ -2.41887986e-01, 1.00000000e-02, 8.53167852e-04, 
    1.00000000e-05]), array([ -2.41887896e-01, 1.00000000e-02, 2.04335972e-03, 
    1.00000000e-05]), array([ -2.41887705e-01, 1.00000000e-02, 4.89390092e-03, 
    1.00000000e-05]), array([ -2.41887377e-01, 1.00000000e-02, 1.17210230e-02, 
    1.00000000e-05]), array([ -2.41887150e-01, 1.00000000e-02, 2.80721620e-02, 
    1.00000000e-05]), array([ -2.41888211e-01, 1.00000000e-02, 6.72335754e-02, 
    1.00000000e-05]), array([ -2.41891897e-01, 1.00000000e-02, 1.61026203e-01, 
    1.00000000e-05]), array([ -2.41895321e-01, 1.00000000e-02, 3.85662042e-01, 
    1.00000000e-05]), array([ -2.41895312e-01, 1.00000000e-02, 9.23670857e-01, 
    1.00000000e-05]), array([ -2.41892873e-01, 1.00000000e-02, 2.21221629e+00, 
    1.00000000e-05]), array([ -2.41889564e-01, 1.00000000e-02, 5.29831691e+00, 
    1.00000000e-05]), array([ -2.41888135e-01, 1.00000000e-02, 1.26896100e+01, 
    1.00000000e-05]), array([ -2.41888055e-01, 1.00000000e-02, 3.03919538e+01, 

ich alle diese einzelnen Arrays zurück zu einem Tupel kombinieren möchte, während die Reihenfolge der Werte zu bewahren. Bitte helfen Sie mir und stellen Sie eine Methode zur Verfügung, um dieses Tupel zu filtern.

+2

Sind Sie sicher, dass Sie den Begriff 'Tupel' richtig verwenden? Wie würde diese Liste von Arrays wie ein einzelnes Tupel aussehen? – roganjosh

+0

Die Form des Arrays wäre (588, 4). –

+0

Ich bekomme immer noch nicht die Verwendung von "Tupel". Ist es mein Wissen, dass es hier falsch ist? Sie wollen nur ein mehrdimensionales Array. – roganjosh

Antwort

0

Sie können dies mit Numpy tun und nicht auf einen anderen Datentyp gehen zu lassen numpy.where()

Einige Annahmen ich davon aus bin der Vergleichszahl war 0,01 vs 0,1 in der Frage.

import numpy as np 
#put your data (tup) as a numpy array here 
tup[np.where(tup[:,1]==0.01)] 
0

Sie können reduzieren, sie zu kombinieren zurück zu einem

score = reduce(lambda x,y: x+y, [a for a in tup if abs(a[1] - 0.1) < 10e-9]) 
Verwandte Themen