2013-04-11 7 views
19

मेरे पास एक numpy सरणी है। मैं एक नई सरणी बनाना चाहता हूं जो हर तीसरे तत्व पर औसत है। तो नया सरणी मूल के रूप में आकार का एक तिहाई होगा।एक numpy सरणी के प्रत्येक एन तत्वों पर औसत

एक उदाहरण के रूप:

np.array([2,2,2]) 

किसी को भी ऐसा करने का एक कारगर तरीका बता सकते हैं:

np.array([1,2,3,1,2,3,1,2,3]) 

सरणी लौट जाना चाहिए? मैं रिक्त स्थान खींच रहा हूँ।

उत्तर

31

अपने सरणी arr लंबाई 3 से विभाज्य है:

np.mean(arr.reshape(-1, 3), axis=1) 

एक उच्च आयामी सरणी Reshaping और फिर अतिरिक्त आयाम में से एक पर आपरेशन को कम के कुछ फार्म प्रदर्शन numpy प्रोग्रामिंग का एक प्रधान है।

+7

जैम - धन्यवाद, यह चीजों को करने का एक बहुत ही शानदार तरीका है। क्या आपके पास कोई सलाह है कि कोई इन तथाकथित 'numpy प्रोग्रामिंग के स्टेपल' के बारे में कहां पढ़ सकता है? – user1654183

+1

यदि 'arr' लंबाई 3 से विभाजित नहीं है, तो आप कुछ ऐसा कर सकते हैं: ' arr = np.nanmean (np.pad (arr.astype (float), (0, 3 - arr.size% 3), मोड = 'स्थिर', स्थिर_values ​​= np.NaN) .reshape (-1, 3), अक्ष = 1) ' – plong0

संबंधित मुद्दे