2016-02-20 31 views
6

मैं कुछ कोड चलाने की कोशिश कर रहा हूं (जो मेरा नहीं है), जहां numpy लाइब्रेरी से 'स्टैक' का उपयोग किया जाता है।numpy 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता नहीं है 'स्टैक'

प्रलेखन में देख रहे हैं, ढेर वास्तव में numpy में मौजूद है: https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.stack.html

लेकिन जब मैं कोड चलाने के लिए, मुझे मिल गया:

AttributeError: 'module' object has no attribute 'stack' 

किसी भी विचार कैसे इसे ठीक करने के। कोड निकालने:

s_t = np.stack((x_t, x_t, x_t, x_t), axis = 2) 

मैं कुछ पुराने पुस्तकालयों की आवश्यकता है?

धन्यवाद।

संपादित करें: किसी कारण से, पाइथन numpy लाइब्रेरी के पुराने संस्करण का उपयोग करता है। पीपी 2 फ्रीज प्रिंट "numpy == 1.10.4"। मैंने numpy को भी पुनर्स्थापित किया है और मुझे "सफलतापूर्वक numpy-1.10.4 इंस्टॉल किया गया है", लेकिन कोड में np.version.version प्रिंटिंग मुझे 1.8.2 देता है।

+0

आप कैसे करते हैं आयात numpy? आयात numpy एनपी – skyline75489

+0

यह numpy 1.10 के बाद से ... आप शायद हमेशा की तरह एक पुराने संस्करण का उपयोग कर रहे – donkopotamus

+0

केवल मौजूद है। आप शायद एनपी के रूप में numpy आयात numpy के एक पुराने संस्करण है तो np.version.version आप पिप फ्रीज से जानकारी –

उत्तर

1

इसकी संभावना 2 numpy पुस्तकालयों में से एक है, आपके सिस्टम पुस्तकालयों में से एक, और दूसरा आपके पाइथन साइट पैकेज में जो पीआईपी द्वारा बनाए रखा जाता है। आपके पास इसे ठीक करने के लिए कुछ विकल्प हैं।

  • आप sys.path में पुस्तकालयों reorder चाहिए, ताकि अपने पिप स्थापित numpy पुस्तकालय सामने देशी numpy पुस्तकालय आता है। अपने पथ को स्थायी रूप से ठीक करने के लिए this out देखें।

  • virtualenv या Anaconda पर भी देखें, जो आपको आपके सिस्टम पर एकाधिक संस्करण होने पर पैकेज के विशिष्ट संस्करणों के साथ काम करने की अनुमति देगा।

  • यह सुनिश्चित करने के लिए कि आपके उपयोगकर्ता पथ (सिस्टम लाइब्रेरी) पर लाइब्रेरी इंस्टॉल करने के तरीके के बारे में एक और suggestion है।
4

फ़ंक्शन numpy.stack नया है; यह appeared in numpy == 1.10.0 है। आप उस संस्करण अपने सिस्टम पर चलने नहीं मिल सकता है, कोड पर (अंत के पास)

https://github.com/numpy/numpy/blob/f4cc58c80df5202a743bddd514a3485d5e4ec5a4/numpy/core/shape_base.py

मैं इसे थोड़ा अधिक जांच करने के लिए की जरूरत है पाया जा सकता है, लेकिन समारोह के काम कर हिस्सा है :

sl = (slice(None),) * axis + (_nx.newaxis,) 
expanded_arrays = [arr[sl] for arr in arrays] 
return _nx.concatenate(expanded_arrays, axis=axis) 

तो यह प्रत्येक सरणी के लिए एक np.newaxis कहते हैं, और फिर उस पर श्रेणीबद्ध। तो, vstack, hstack और dstack यह इनपुट के आयामों को समायोजित करता है, और फिर np.concatenate का उपयोग करता है। विशेष रूप से नया या जादुई कुछ भी नहीं।

तो अगर x(2,3) आकार है, x[:,np.newaxis](2,1,3) है, x[:,:,np.newaxis](2,3,1) है आदि

:

तो x_t, 2 डी है तो

np.stack((x_t, x_t, x_t, x_t), axis = 2) 

शायद एक नई सरणी अक्ष पर आकार 4 है 2.

या बनाने

np.dstack((x_t, x_t, x_t, x_t)) 

के बराबर है

tmp = x_t[:,:,None] 
np.concatenate((tmp,tmp,tmp,tmp), axis=2) 
संबंधित मुद्दे

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