/ / अजगर में, मैथ.एसीओस () स्केलर के लिए numpy.arccos () से अधिक तेज है? - अजगर, गणित, सुन्न

पायथन में, math.acos () scalars के लिए numpy.arccos () से तेज है? - अजगर, गणित, numpy

मैं बहुत से ज्यामितीय गणनाओं के साथ अजगर में कुछ वैज्ञानिक कंप्यूटिंग कर रहा हूं, और मैं उपयोग करने के बीच एक महत्वपूर्ण अंतर के बीच भाग गया numpy बनाम मानक math पुस्तकालय।

>>> x = timeit.Timer("v = np.arccos(a)", "import numpy as np; a = 0.6")
>>> x.timeit(100000)
0.15387153439223766
>>> y = timeit.Timer("v = math.acos(a)", "import math; a = 0.6")
>>> y.timeit(100000)
0.012333301827311516

यह लगभग 10x स्पीडअप से अधिक है! मैं लगभग सभी मानक गणित कार्यों के लिए numpy का उपयोग कर रहा हूं, और मैंने यह मान लिया है कि यह अनुकूलित और कम से कम उतना ही तेज है math। लंबे समय तक पर्याप्त वैक्टर, सुन्न।arccos () अंततः जीत जाएगा। math.acos () के साथ लूपिंग बनाम।, लेकिन चूंकि मैं केवल स्केलर मामले का उपयोग करता हूं, क्या math.acos (), math.asin (), math.atan () का उपयोग करने में कोई नकारात्मक पहलू है सुन्न संस्करणों के बजाय बोर्ड?

उत्तर:

जवाब के लिए 3 № 1

से कार्यों का उपयोग करना math स्केलर के लिए मॉड्यूल पूरी तरह से ठीक है। numpy.arccos के कारण कार्य धीमा होने की संभावना है

यदि प्रदर्शन में यह अंतर आपकी समस्या के लिए महत्वपूर्ण है, तो आपको यह जांचना चाहिए कि क्या आप वास्तव में सरणी संचालन का उपयोग नहीं कर सकते user2357112 टिप्पणियों में कहा, सरणियाँ क्या हैं numpy वास्तव में महान है।