मेरे पास एक फ़ंक्शन foo
है जो एक तर्क के रूप में एक NxM numpy सरणी लेता है और एक स्केलर मान देता है। मैं, मुझे लंबाई ए के एक परिणामी numpy सरणी2 डी numpy arrays के मैपिंग फ़ंक्शन
curently देने के लिए एक AxNxM numpy सरणी data
, जिसकी मैं मैप करने के लिए foo
करना चाहते हैं मैं यह कर रहा हूँ:
result = numpy.array([foo(x) for x in data])
यह काम करता है, लेकिन ऐसा लगता है कि मैं numpy जादू (और गति) का लाभ नहीं ले रहा हूँ। क्या कोई बेहतर तरीका है?
मैंने numpy.vectorize
, और numpy.apply_along_axis
पर देखा है, लेकिन न तो 2 डी arrays के फ़ंक्शन के लिए काम करता है।
संपादित करें: मैं 24x24 छवि पैच पर बढ़ा हुआ रिग्रेशन कर रहा हूं, इसलिए मेरा एक्सएक्सएक्सएम 1000x24x24 जैसा कुछ है। जिसे मैंने foo
कहा है, एक पैच को एक हायर जैसी सुविधा लागू करता है (इसलिए, बहुत कम्प्यूटेशनल रूप से गहन नहीं)।
वहाँ इतना है कि यह मनमाना आयाम के एक numpy सरणी स्वीकार कर सकते हैं 'foo' पुनःकूटित के लिए एक रास्ता हो सकता है, इसकी संगणना को लागू करने पिछले दो अक्षों के लिए। लेकिन हमें यह देखना होगा कि विशिष्ट सुझाव बनाने के लिए 'foo' को कोड किया गया है। – unutbu
मैंने अपनी विशिष्ट समस्या के बारे में अधिक जानकारी दी है। क्या 'डेटा' को छोड़ना समझदारी होगी, इंडेक्स पैरामीटर लेने के लिए 'foo' को फिर से कोड करें, और उसके बाद इसे सदिश करें और इसे' arange (len (x)) 'पर मैप करें? – perimosocordiae