2013-11-28 8 views
18

Cython दस्तावेज की tutorial में, वहाँ numpy मॉड्यूल के cimport और आयात बयान कर रहे हैं:Cython: cimport और के रूप में (दोनों) एनपी आयात numpy

import numpy as np 
cimport numpy as np 

मैं इस सम्मेलन पाया बीच काफी लोकप्रिय है numpy/cython उपयोगकर्ताओं।

यह मेरे लिए अजीब लगता है क्योंकि वे दोनों एनपी के रूप में नामित हैं। कोड के किस हिस्से में, आयात/आयातित एनपी का उपयोग किया जाता है? क्यों साइथन कंपाइलर उन्हें भ्रमित नहीं करता है?

+2

क्योंकि 'cimport' वास्तव में एक (पायथन) मॉड्यूल आयात नहीं करता है। यह आयात करता है [(सी) परिभाषाएं] (http://docs.cython.org/src/userguide/sharing_declarations.html#the-cimport-statement)। मुझे नहीं पता, लेकिन मैं कल्पना कर सकता हूं कि यदि आप दूसरी पंक्ति को केवल 'सीमपोर्ट numpy' में बदल देते हैं, तो चीज़ें टूट जाएंगी: स्क्रिप्ट में उपयोग किए जाने वाले वास्तविक पायथन मॉड्यूल नाम के बीच संवाददाता की बहुत अच्छी आवश्यकता हो सकती है, और परिभाषाएं नाम स्थान। – Evert

+0

@Ever आप 'cimport numpy' का भी उपयोग कर सकते हैं, वैसे ही कोई' आयात numpy' का उपयोग कर सकता है, यह वैसे ही काम करता है, लेकिन 'आयात' आयातित मॉड्यूल के तहत आयातित मॉड्यूल के तहत सी कार्यों या विशेषताओं तक पहुंच प्रदान करता है, जबकि आयात 'पायथन फ़ंक्शन या विशेषताओं के लिए –

उत्तर

21

cimport my_modulemy_module तहत सी कार्य या गुण या यहां तक ​​कि उप मॉड्यूल के लिए पहुँच देता है

import my_moduleअजगर कार्यों के लिए पहुँच देता है या my_module के तहत जिम्मेदार बताते हैं या उप मॉड्यूल।

आपके मामले में:

cimport numpy as np 

आप Numpy सी एपीआई, जहां सरणी बफ़र्स, चर प्रकार और इतने पर घोषणा कर सकते हैं तक पहुँच देता है ...

और:

import numpy as np 

आपको न्यूमपी-पायथन कार्यों तक पहुंच प्रदान करता है, जैसे np.array, np.linspace, आदि

साइथन आंतरिक रूप से इस अस्पष्टता को संभालता है ताकि उपयोगकर्ता को अलग-अलग नामों का उपयोग करने की आवश्यकता न हो।

+1

एक छोटे से जोड़े के रूप में: @ सलुलो कास्त्रो द्वारा संकेतित के रूप में, Numpy C API आपके पाइथन Numpy ऑफ़र के सभी कार्यों की पेशकश नहीं करता है। यह पता लगाने के लिए कि सी एपीआई क्या कर सकता है और नहीं कर सकता है, आप अपने 'में शामिल' [फ़ोल्डर] (https://github.com/cython/cython/tree/master/Cython/Includes/numpy) पर एक नज़र डाल सकते हैं साइथन स्थापना। वहां आपको '.pxd' फ़ाइलें साइथन आयात मिलेगी। – m00am

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