2013-11-21 7 views
22

में फास्ट एन-आयामी स्पैस सरणी मेरे पास एक ऐसा एप्लिकेशन है जिसमें बड़े एन-आयामी सरणी शामिल हैं जो बहुत दुर्लभ हैं। scipy.sparse में एक उपयोगी 'वेक्टरिज्ड हो रही है और सेटिंग' सुविधा है, ताकि साइथन का उपयोग एक स्पैर मैट्रिक्स को जल्दी से पॉप्युलेट करने के लिए किया जा सके।पाइथन/साइथन

बेशक scipy पैकेज एन-आयामों को संभाल नहीं सकता है। मुझे दो पैकेज मिले हैं जो पाइथन sparray और ndsparse में एन-आयामी स्पैस सरणी करते हैं। हालांकि ऐसा लगता है कि न तो वेक्टरकृत हो रही है और सेटिंग सुविधा है।

तो मैं की जरूरत है या तो:

  • और सेट या vectorized प्राप्त के साथ n आयामी सरणियों मैं आसानी से या
  • Cython साथ उपयोग कर सकते हैं जो कुछ विरल सरणियों के लिए
  • एसी पुस्तकालय के लिए एक अजगर पैकेज ' अपना खुद का 'विकल्प रोल करें जो मुझे लगता है कि एक पाइथन dict

मेरे उद्देश्य के लिए मुझे लगता है कि एन-आयाम निर्देशांक मैपिंग 1 या दो आयामों पर काम कर सकता है। बेहतर होगा कि एक नियम बराबर है कि मैं एक साइथन लूप के अंदर तेजी से पहुंच सकता हूं। मैं इस नियम को अजगर dict से बाहर मानता हूं।

आश्चर्य है कि कोई मुझे सिथन के भीतर से सी ++ मानचित्र ऑब्जेक्ट का उपयोग करने का उदाहरण दे सकता है?

+13

जब मैं '" की सिफारिश करने के लिए कह से असहमत यह इस तरह सवाल है या एक टूल, लाइब्रेरी या पसंदीदा ऑफ़-साइट संसाधन ढूंढें ऑफ-विषय "' बंद कारण हैं। आदमी ने स्पष्ट रूप से अपना शोध किया है, कोई और क्या कर सकता है? –

+1

क्षमा करें मुझे नहीं पता था कि यह एक समस्या थी। मुझे लगता है कि मैं बहस कर सकता हूं, मैं पुस्तकालय के ठीक बाद नहीं हूं बल्कि यह कैसे करना है इस पर कोई सुझाव है। –

+8

बेकार कारण "डेवलपर्स" के कारण निकट कारण मौजूद है जो निरंतर उन प्रश्नों को पोस्ट करते हैं जो कुछ भी नहीं पूछते हैं, लेकिन "मैं jquery का उपयोग करके ज़िपफाइल कैसे बना सकता हूं मुझे teh codez plz दिखाएं"। लेकिन इस मामले में, मेरा मानना ​​है कि यह एक पूरी तरह से वैध, अच्छी तरह से शोध किया गया सवाल है। +1। –

उत्तर

5

यदि आप सी dict विकल्प के साथ जाने का निर्णय लेते हैं, तो आप सी ++ एसटीएल के std :: मानचित्र का उपयोग कर सकते हैं। यह असंभव है कि आपको तेज़ या अधिक मजबूत देशी कोड मिलेगा जो एक शब्दकोश/मानचित्र लागू करता है।

cppmap.pyx:

# distutils: language = c++ 

cdef extern from "<map>" namespace "std": 
    cdef cppclass mymap "std::map<int, float>": 
     mymap() 
     float& operator[] (const int& k) 

cdef mymap m = mymap() 
cdef int i 
cdef float value 

for i in range(100): 
    value = 3.0 * i**2 
    m[i] = value 

print m[10] 

setup.py:

from distutils.core import setup 
from Cython.Build import cythonize 
setup(name = "cppmapapp" 
    ext_modules = cythonize('*.pyx')) 

आदेश लाइन:

$ python setup.py build 
$ cd build/lib.macosx-10.5-x86_64-2.7 
$ python -c 'import cppmap' 
300.0