Seite 1 von 1

Arrays, Numpy und Dictionaries (sklearn.clusters.dbscan)

Verfasst: Samstag 19. November 2016, 20:10
von Popkultur
Folgende Arrays sind gegeben, hier zur Vereinfachung nur mit zwei Elementen. Das erste habe ich angelegt, die anderen zwei sind irgendwie numpy-arrays. x sei hier mal nicht weiter genutzt.:

Code: Alles auswählen

pos = {'könnten wenn': array([ 0.123,  0.123,  0.123], dtype=float32), 'könnten als': array([ 0.234,  0.234,  0.234 ], dtype=float32)}
x = [[ 0.123 0.123 0.123 ], [ 0.234  0.234 0.234 ]]
labels = [0.123 0.123 0.123, 0.234 0.234 0.234]
Ich möchte nun ein dictionary, in dem für jedes labels-Element für das es eine Entsprechung in pos gibt ein Eintrag erscheint wie:
{ 'könnten wenn': array([ 0.123, 0.123, 0.123], dtype=float32) }

Es gibt diesen Code:

Code: Alles auswählen

cluster_dict = {i: x[labels==i] for i in range(n_clusters_)}
Der macht was Ähnliches. Ich versteh nur leider das x[labels==i] nicht.

Ich hab mir das hier zusammengeschrieben:

Code: Alles auswählen

cluster_dict = {i: list(pos.keys())[list(pos.values()).index(x[labels==i])] for i in range(n_clusters_)}  
Aber das sagt:
The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

TL;DR: Wie kriege ich den Vergleich pos[xxx]==labels[yyy] hin?

Das Ganze ist genutzt mit sklearn.clusters.dbscan wer es kennt. Für Hilfe vielen Dank!

Re: Arrays, Numpy und Dictionaries (sklearn.clusters.dbscan)

Verfasst: Samstag 19. November 2016, 21:17
von Popkultur

Code: Alles auswählen

    cluster_dict = dict()
    for i in range(n_clusters_):
        class_member_mask = (labels == i)
        new_member = list(x[class_member_mask].tolist())
        in_pos_list = list(pos.values()).index(new_member[0])
        cluster_dict.update({ i: in_pos_list }) 
Hier nochmal in Langform, geht nicht, weil in_pos_list = list(pos.values()).index(new_member[0])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Re: Arrays, Numpy und Dictionaries (sklearn.clusters.dbscan)

Verfasst: Samstag 19. November 2016, 23:36
von Popkultur
Hab das Problem umgangen.

Re: Arrays, Numpy und Dictionaries (sklearn.clusters.dbscan)

Verfasst: Samstag 19. November 2016, 23:53
von Dav1d
Popkultur hat geschrieben:Hab das Problem umgangen.
Möchtest du deine Lösung mitteilen, für alle die später durch eine Suchmaschine ihrerer Wahl auf den Thread stoßen?

Re: Arrays, Numpy und Dictionaries (sklearn.clusters.dbscan)

Verfasst: Samstag 19. November 2016, 23:57
von Popkultur
Das ist schwierig, denn ich habs komplett umgangen und das Problem existiert so nicht mehr. Kann also eigentlich der Thread gelöscht werden, sorry.