आप binned_statistic
from scipy.stats कि विभिन्न आँकड़ों कार्यों एक -1 डी सरणी पार मात्रा में लागू करने के लिए समर्थन करता है का उपयोग कर सकते हैं। भाग प्राप्त करने के लिए, हमें शिफ्ट की स्थिति को क्रमबद्ध करने और प्राप्त करने की आवश्यकता होती है (जहां भाग बदलते हैं), जिसके लिए np.unique
उपयोगी होगा। उन सभी रखें, तो एक कार्यान्वयन है -
from scipy.stats import binned_statistic as bstat
# Sort data corresponding to argsort of first column
sdata = data[data[:,0].argsort()]
# Unique col-1 elements and positions of breaks (elements are not identical)
unq_x,breaks = np.unique(sdata[:,0],return_index=True)
breaks = np.append(breaks,data.shape[0])
# Use binned statistic to get grouped average and std deviation values
idx_range = np.arange(data.shape[0])
avg_y,_,_ = bstat(x=idx_range, values=sdata[:,1], statistic='mean', bins=breaks)
std_y,_,_ = bstat(x=idx_range, values=sdata[:,1], statistic='std', bins=breaks)
binned_statistic
की डॉक्स से, एक भी एक कस्टम आंकड़ा फ़ंक्शन का उपयोग कर सकते हैं:
समारोह: उपयोगकर्ता परिभाषित समारोह जो मूल्यों की एक -1 डी सरणी लेता है , और एक संख्यात्मक सांख्यिकीय आउटपुट करता है। प्रत्येक बिन में मानों पर इस फ़ंक्शन को कहा जाएगा। खाली डिब्बे का प्रतिनिधित्व फ़ंक्शन ([]), या NaN द्वारा किया जाएगा यदि यह कोई त्रुटि देता है।
नमूना इनपुट, आउटपुट -
In [121]: data
Out[121]:
array([[2, 5],
[2, 2],
[1, 5],
[3, 8],
[0, 8],
[6, 7],
[8, 1],
[2, 5],
[6, 8],
[1, 8]])
In [122]: np.column_stack((unq_x,avg_y,std_y))
Out[122]:
array([[ 0. , 8. , 0. ],
[ 1. , 6.5 , 1.5 ],
[ 2. , 4. , 1.41421356],
[ 3. , 8. , 0. ],
[ 6. , 7.5 , 0.5 ],
[ 8. , 1. , 0. ]])
अगर आप किसी [मिनिमल, पूरा जोड़ सकते हैं देता है, और सत्यापन योग्य उदाहरण] (http://stackoverflow.com/help/mcve) अपने प्रश्न के लिए? – Kasramvd
http://stackoverflow.com/questions/4373631/sum-array-by-number-in-numpy –
पर एक नज़र डालें: इसके अलावा: यदि आप वास्तविक डेटा के साथ काम कर रहे हैं, तो शायद आपको यह आसान लगेगा नंगे numpy से ['pandas'] (http://pandas.pydata.org) का उपयोग करें। यदि आपका 'डेटा' 'ndarray' के बजाय 'डेटाफ्रेम' था, तो कुछ 'df.groupby (0) [1] .agg ([" mean "," std "])' काम करेगा .. – DSM