सी here का उपयोग कर कस्टम numpy dtypes बनाने के लिए उदाहरण हैंnumpy cython
ऐसा लगता है कि यह भी होना चाहिए साइथन का उपयोग करके एक प्रकार का प्रकार बनाने के लिए संभव है (और फिर इसके लिए कस्टम ufuncs बनाएँ)। क्या यह संभव है? यदि हां, तो क्या आप एक उदाहरण पोस्ट कर सकते हैं?
उपयोग के मामले:
मैं कुछ अस्तित्व विश्लेषण करना चाहते हैं। बुनियादी डेटा तत्व संबंधित सेंसर मूल्यों के साथ उत्तरजीविता के समय (फ्लोट) होते हैं (झूठी अगर संबंधित समय विफलता समय का प्रतिनिधित्व करता है और सही है तो यह एक सेंसरिंग समय का प्रतिनिधित्व करता है (यानी, अवलोकन की अवधि के दौरान कोई विफलता नहीं हुई))।
स्पष्ट रूप से मैं इन मानों को संग्रहीत करने के लिए केवल दो numpy arrays का उपयोग कर सकता हूं: समय के लिए एक फ्लोट सरणी और सेंसर मूल्यों के लिए एक बूल सरणी। हालांकि, मैं कई बार होने वाली घटना की संभावना के लिए जिम्मेदार होना चाहता हूं (यह दिल का दौरा करने के लिए एक अच्छा मॉडल है - आप एक से अधिक हो सकते हैं)। इस मामले में, मुझे वस्तुओं की एक सरणी की आवश्यकता है जिसे मैं MultiEvent
एस कहता हूं। प्रत्येक MultiEvent
में फ्लोट्स (बिना सेंसर विफलता समय) और एक अवलोकन अवधि (एक फ्लोट) का अनुक्रम होता है। ध्यान दें कि असफलताओं की संख्या सभी MultiEvent
एस के लिए समान नहीं है। प्रत्येक
के लिए विफलताओं की संख्या
जाओ सेंसर समय मिलता है (कि की अवधि है:
मैं
MultiEvent
रों की एक सरणी पर कुछ कार्रवाई करने में सक्षम होना चाहिए अवलोकन कम से कम सभी विफलता समयों का योग)पैरामीटर के अतिरिक्त सरणी (जैसे खतरे के मूल्यों की सरणी) के आधार पर लॉग संभावना की गणना करें। उदाहरण के लिए, एक भी
MultiEvent
M
और निरंतर खतरा मूल्यh
के लिए लॉग संभावना की तरह कुछ होगा: विफलता समय कीsum(log(h) + h*t for t in M.times) - h*(M.period - sum(M.times))
जहां M.times
सूची है (सरणी, जो कुछ भी) और M.period
है कुल अवलोकन अवधि। मैं उचित numpy प्रसारण नियमों को लागू करना चाहते हैं, ताकि मैं कर सकते हैं:
log_lik = logp(M_vec,h_vec)
और यह रूप में लंबे समय M_vec
और h_vec
के आयाम के रूप में संगत कर रहे हैं काम करेंगे।
मेरा वर्तमान कार्यान्वयन numpy.vectorize
का उपयोग करता है। यह 1 और 2 के लिए काफी अच्छा काम करता है, लेकिन यह 3 के लिए बहुत धीमा है। ध्यान दें कि मैं this नहीं कर सकता क्योंकि मेरे मल्टीडाटा ऑब्जेक्ट्स में विफलताओं की संख्या समय से पहले ज्ञात नहीं है।
क्योंकि आप cython लेखन सी लिखने की तुलना में सरल लगता है पूछने के लिए अपने कारण है: तुम भी manual में वर्णित के रूप cython से इस सरणियों का उपयोग कर सकते हैं? मुझे संदेह है कि यदि यह संभव है (जो मुझे नहीं पता), तो आप कोड के साथ समाप्त हो जाएंगे जो सी के रूप में जटिल और गन्दा है, इसलिए कोई लाभ नहीं हो सकता है। – DaveP
@ डेवप दो कारण हैं। एक यह है कि मुझे सी से सीथन में लिखना आसान लगता है। दूसरा यह है कि मैं इस प्रक्रिया को पाइथन प्रोग्रामर के लिए नए डाइटिप्स और यूफंक्स के लिए दोहराना आसान बनाना चाहता हूं। मैं उम्मीद कर रहा हूं कि मैं अधिकांश जटिलता को लपेट सकता हूं और साइथन में एक साधारण चीज़ को परिभाषित करने के लिए परिभाषित कर सकता हूं। उस ने कहा, साइथन कुछ ऐसा है जो मैंने पिछले हफ्ते ही सीखा था। मैं इसके साथ खेल रहा हूं, लेकिन इस बिंदु पर मैं अपनी क्षमताओं को पूरी तरह से समझ नहीं पा रहा हूं। – jcrudy
एक उपयोग केस होना अच्छा लगेगा ताकि हम आपकी मदद कर सकें – jlengrand