import numpy as np
data = np.array(['b','b','b','a','a','a','a','c','c','d','d','d'])
मैं इसNumpy पूर्णांकों संवर्द्धित
data = np.array([0,0,0,1,1,1,1,2,2,3,3,3])
मैं एक numpy समाधान
के लिए देख रहा हूँ की तरह संवर्द्धित एक पूर्णांक के साथ तार के प्रत्येक समूह प्रतिस्थापित करने की आवश्यकता के साथ तत्वों की समूहों की जगह इस डेटासेट के साथ http://www.uploadmb.com/dw.php?id=1364341573
import numpy as np
f = open('test.txt','r')
lines = np.array([ line.strip() for line in f.readlines() ])
lines100 = lines[0:100]
_, ind, inv = np.unique(lines100, return_index=True, return_inverse=True)
print ind
print inv
nums = np.argsort(ind)[inv]
print nums
[ 0 83 62 40 19]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3
3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4]
lines200 = lines[0:200]
_, ind, inv = np.unique(lines200, return_index=True, return_inverse=True)
print ind
print inv
nums = np.argsort(ind)[inv]
print nums
[167 0 83 124 104 144 185 62 40 19]
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6]
[9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3]
के लिए 'डेटा = np.array ([3,1,2])' काम नहीं करता (संविधान मैं के बारे में सोच सकते हैं एक प्रतिस्थापन शब्दकोश है मेरे उत्तर पर @ डीएसएम की टिप्पणी देखें) – askewchan
@askewchan अजीब, मैं अभी भी पूरी तरह से समझ नहीं पा रहा हूं कि हम दोनों कभी-कभी विचार क्यों करते थे, लेकिन कभी-कभी ऐसा नहीं होता ... ऐसा लगता है कि यह थोड़ा तेज़ है, ऐसा करने के लिए आपके पुन: प्लेसमेंट शब्दकोश की बजाय 'np.unique' पर दूसरी कॉल, मेरा संपादन देखें। – Jaime
मुझे दोनों समाधान पसंद हैं। मैं इसे स्वीकार करता हूं क्योंकि यह शुद्ध सुस्त और तेज है। हालांकि, मैं इसे पूरी तरह समझ नहीं पा रहा हूं। क्या आप एक संक्षिप्त स्पष्टीकरण लिख सकते हैं? – siamii