पर 'आउट' तर्क के रूप में अजीब गुजरने वाली इनपुट सरणी को आम तौर पर इनपुट सरणी को वैकल्पिक रूप से एक यूफुनक में वैकल्पिक आउट तर्क के रूप में प्रदान करने के लिए सुरक्षित है, बशर्ते कि यह सही है? उदाहरण के लिए, मैं पुष्टि कर लें कि निम्न काम करता है:यूफुन
>>> import numpy as np
>>> arr = np.array([1.2, 3.4, 4.5])
>>> np.floor(arr, arr)
array([ 1., 3., 4.])
सरणी प्रकार या तो संगत या निर्गम (जो numpy.floor()
के लिए एक नाव है) के साथ समान होना चाहिए, या ऐसा होता है:
>>> arr2 = np.array([1, 3, 4], dtype = np.uint8)
>>> np.floor(arr2, arr2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ufunc 'floor' output (typecode 'e') could not be coerced to provided output parameter (typecode 'B') according to the casting rule ''same_kind''
तो उचित प्रकार की एक सरणी दी गई है, क्या यह आमतौर पर ufuncs को लागू करने के लिए सुरक्षित है? या floor()
एक असाधारण मामला है? प्रलेखन यह स्पष्ट नहीं है, और न तो निम्न दो धागे सवाल पर स्पर्शरेखा प्रभाव पड़ता है कार्य करें:
संपादित करें:
एक के रूप में पहला ऑर्डर अनुमान है, मुझे लगता है कि http://docs.scipy.org/doc/numpy/user/c-info.ufunc-tutorial.html पर ट्यूटोरियल के आधार पर यह अक्सर होता है, लेकिन हमेशा सुरक्षित नहीं होता है। गणना के दौरान इंटरमीडिएट परिणामों के लिए अस्थायी धारक के रूप में आउटपुट सरणी का उपयोग करने पर कोई प्रतिबंध नहीं दिखता है। जबकि floor()
और ciel()
जैसे कुछ अस्थायी भंडारण की आवश्यकता नहीं हो सकती है, अधिक जटिल कार्य हो सकते हैं। कहा जा रहा है कि, मौजूदा मौजूदा पुस्तकालय को इसके साथ दिमाग में लिखा जा सकता है।
यह तकनीकी रूप से एक ufunc नहीं है, लेकिन इस तरह से 'np.dot' में' आउट' पैरामीटर का उपयोग करके 2 डी arrays गलत परिणाम उत्पन्न कर सकते हैं। –
यह लगभग काउंटररेक्स नमूना है जिसे मैं ढूंढ रहा था, लेकिन काफी नहीं :) –
[ufunc दस्तावेज़] (http://docs.scipy.org/doc/numpy/reference/ufuncs.html) 'ऐड (जी, सी, जी) 'गणित परिचालन "के तहत युक्ति में' जी = जी + सी 'के अनुकूलन के रूप में। मैं कहूंगा कि यह सुरक्षित है। (दूसरी ओर, इनपुट और आउटपुट ओवरलैपिंग के साथ ufuncs को कॉल करना, लेकिन समान नहीं * * समस्याएं पैदा करेगा।) – user2357112