mit reproduzierbaren Objekte starten
>>> I = np.r_[0, 1, 2, 3, 0, 3]
>>> W = np.r_[60, 50, 40, 30, 20, 10]
>>> M = W[I]
Dann beachten Sie, dass man hat
>>> W[I]
array([60, 50, 40, 30, 60, 30])
>>> W[W[I]==W]
array([60, 50, 40, 30])
>>> np.unique(W[I], return_counts=True)[1]
array([2, 1, 1, 2])
Schließlich was
Lassen Sie uns
>>> W[M==W]*np.unique(M, return_counts=True)[1] # X
array([120, 50, 40, 60])
über das Tun (fast) zu tun, dass mit Streichern
>>> W = np.array(['w0', 'w1', 'w2', 'w3', 'w4', 'w5'])
>>> M = W[I]
>>> M
array(['w0', 'w1', 'w2', 'w3', 'w0', 'w3'], dtype='|S2')
>>> W[M==W]
array(['w0', 'w1', 'w2', 'w3'], dtype='|S2')
>>> np.unique(W[I], return_counts=True)[1]
array([2, 1, 1, 2])
Welche geistig führt zu betrachten
>>> [2*'w0', 'w1', 'w2', 2*'w3']
Ist 'I' sortiert? – Psidom
@Psidom Es ist nicht, aber es ist nicht zu schwierig, es zu sortieren, Ergebnis wird sich nicht ändern; Kennen Sie die Lösung mit dem sortierten 'I'? – DikobrAz
Können Sie Ihr Ergebnis mit dem aktualisierten 'I' aktualisieren? Ich bin mir nicht sicher, was Sie jetzt tun wollen. – Psidom