मेरे पास एक ऐसा फ़ंक्शन है जिसमें पैरामीटर का एक गुच्छा है। मैन्युअल रूप से सभी पैरामीटर सेट करने की बजाय, मैं एक ग्रिड खोज करना चाहता हूं। मेरे पास प्रत्येक पैरामीटर के लिए संभावित मानों की एक सूची है। पैरामीटर के हर संभव संयोजन के लिए, मैं अपना फ़ंक्शन चलाने के लिए चाहता हूं जो उन पैरामीटर पर मेरे एल्गोरिदम के प्रदर्शन की रिपोर्ट करता है। मैं इसके परिणाम को कई आयामी मैट्रिक्स में संग्रहीत करना चाहता हूं, ताकि बाद में मैं अधिकतम प्रदर्शन की अनुक्रमणिका पा सकूं, जो बदले में मुझे सर्वोत्तम पैरामीटर दे।पायथन/numpy में सुरुचिपूर्ण ग्रिड खोज
param1_list = [p11, p12, p13,...]
param2_list = [p21, p22, p23,...] # not necessarily the same number of values
...
results_size = (len(param1_list), len(param2_list),...)
results = np.zeros(results_size, dtype = np.float)
for param1_idx in range(len(param1_list)):
for param2_idx in range(len(param2_list)):
...
param1 = param1_list[param1_idx]
param2 = param2_list[param2_idx]
...
results[param1_idx, param2_idx, ...] = my_func(param1, param2, ...)
max_index = np.argmax(results) # indices of best parameters!
मैं पहले भाग है, जहां मैं सूचियां निर्धारित, के रूप में-है के बाद से मैं आसानी से मान जिस पर मैं खोज में हेरफेर करने में सक्षम होना चाहते रखना चाहते हैं: यहां बताया गया कोड अब लिखा जाता है।
मैं भी परिणाम मैट्रिक्स के साथ समाप्त करना चाहता हूं, क्योंकि मैं कल्पना कर रहा हूं कि अलग-अलग पैरामीटर कैसे बदलते हैं एल्गोरिदम के प्रदर्शन को प्रभावित करते हैं।
मध्य में थोड़ा, हालांकि, काफी दोहराव और भारी है (विशेष रूप से क्योंकि मेरे पास बहुत सारे पैरामीटर हैं, और मैं पैरामीटर जोड़ना या निकालना चाहता हूं), और मुझे लगता है कि एक और संक्षिप्त/सुरुचिपूर्ण तरीका होना चाहिए परिणाम मैट्रिक्स को आरंभ करने के लिए, सभी सूचकांक पर पुनरावृत्त करें, और उचित पैरामीटर सेट करें।
तो, क्या वहां है?
ऐसा लगता है कि आप 'itertools.product' –
अहह, वास्तव में देख रहे हैं! यह चीजों को थोड़ा सा सरल बना देगा! – dlants
इसलिए अनिवार्य रूप से, यहां एक डुप्लिकेट है: http://stackoverflow.com/questions/1316068/pythonic-way-of-iterating-over-3d-array –