2011-10-07 13 views
14

मैं काफी fortran पुस्तकालयों का एक बहुत का उपयोग कर रहा कुछ गणितीय गणना करने के लिए। तो numpy में सभी सरणियों फोरट्रान-निरंतर की जरूरत है।
वर्तमान में मैं numpy.asfortranarray() साथ यह पूरा।फोर्टन शैली में numpy सरणी आदेश को कैसे बल दें?

मेरे प्रश्न हैं:

  1. इस numpy से कहा कि सरणी fortran शैली में संग्रहित किया जाना चाहिए या वहाँ एक तेजी से एक है की एक तेजी से रास्ता नहीं है?
  2. वहाँ कुछ numpy ध्वज सेट करने के लिए संभावना है, ताकि हर सरणी कि बनाई गई है fortran शैली में है?

उत्तर

11

numpy.array ऑब्जेक्ट्स उत्पन्न करते समय वैकल्पिक तर्क आदेश = 'एफ' (डिफ़ॉल्ट 'सी') का उपयोग करें। यह वही तरीका है जो मैं करता हूं, शायद वही काम करता है जो आप कर रहे हैं। संख्या 2 के बारे में, मुझे डिफ़ॉल्ट ऑर्डर सेट करने के बारे में पता नहीं है, लेकिन सरणी उत्पन्न करते समय ऑर्डर वैकल्पिक तर्क को शामिल करना इतना आसान है।

5

प्रश्न 2 के बारे में: आप सरणी परिवर्तनों और संचालन प्रदर्शन के बाद फोरट्रान आदेश को बनाए रखने के बारे में चिंतित हो सकता है। मुझे अंतहीनता के साथ एक ही समस्या थी। मैंने फ़ाइल से एक बड़े-एंडियन कच्चे सरणी को लोड किया, लेकिन जब मैंने एक लॉग परिवर्तन लागू किया, तो परिणामस्वरूप सरणी थोड़ा-अंतराल होगा। मैं पहली बार एक दूसरे बड़े endian सरणी का आवंटन, फिर इन-जगह लॉग प्रदर्शन करके समस्या को हल मिल गया:

b=np.zeros(a.shape,dtype=a.dtype) 
np.log10(1+100*a,b) 

अपने मामले में आप फोरट्रान आदेश के साथ b आवंटित होगा।

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