SciPy और NumPy के बीच संबंध


253

SciPy अपने नामस्थान में NumPy के कार्यों के अधिकांश (लेकिन सभी [1]) प्रदान नहीं करता प्रतीत होता है। दूसरे शब्दों में, यदि कोई फ़ंक्शन नाम है numpy.foo, तो लगभग निश्चित रूप से एक है scipy.foo। ज्यादातर समय, दोनों एक ही कार्य वस्तु की ओर इशारा करते हुए, बिल्कुल समान दिखाई देते हैं।

कभी-कभी, वे अलग हैं। एक उदाहरण देने के लिए जो हाल ही में सामने आया:

  • numpy.log10एक ufunc है जो नकारात्मक तर्कों के लिए NaNs लौटाता है;
  • scipy.log10 नकारात्मक तर्कों के लिए जटिल मान देता है और एक ufunc प्रतीत नहीं होता है।

उसी के बारे में कहा जा सकता है log, log2और [2] के lognबारे में नहीं log1p

दूसरी ओर, numpy.expऔर scipy.expएक ही ufunc के विभिन्न नाम प्रतीत होते हैं। यह भी सही है scipy.log1pऔर numpy.log1p

एक और उदाहरण numpy.linalg.solveबनाम है scipy.linalg.solve। वे समान हैं, लेकिन बाद वाले पूर्व की तुलना में कुछ अतिरिक्त सुविधाएँ प्रदान करते हैं।

स्पष्ट दोहराव क्यों? यदि यह नाम स्थान numpyमें थोक आयात माना जाता है scipy, तो व्यवहार और लापता कार्यों में सूक्ष्म अंतर क्यों है? क्या कुछ अतिरंजित तर्क हैं जो भ्रम को स्पष्ट करने में मदद करेंगे?

[1] numpy.min, numpy.max, numpy.absऔर कुछ अन्य लोगों में कोई प्रतिरूप हैं scipyनाम स्थान।

[२] नुम्पी १.५.१ और SciPy ०.०.०२ बी २ का उपयोग कर परीक्षण किया गया।


7
मैंने जवाब में पढ़ा कि all of those functions are available without additionally importing Numpyक्योंकि the intention is for users not to have to know the distinction between the scipy and numpy namespaces। अब मुझे आश्चर्य होता है, क्योंकि मैं पदों के बारे में सुन्न और थोडा थोडा पीछे चलता हूँ और खुद इसका इस्तेमाल करता हूँ। और मैं लगभग हमेशा सुन्न आयात (np के रूप में) देखा जा रहा है। तो वे असफल रहे?
जॉरिस

8
वहाँ scipy और numpy के बीच कुछ अंतर है FFT सामान में है, मैं एक बार एक मुद्दे द्वारा काट लिया गया है कि अंततः scipy और numpy के संस्करण के लिए नीचे ट्रैक rfft के अलग ढंग से परिभाषित किया
wim

1
SciPy और NumPy के FFT अलग-अलग हैं। SciPy Fortran लाइब्रेरी FFTPACK का उपयोग करता है, इसलिए इसका नाम scipy.fftpack है। NumPy fftpack_lite नामक सी लाइब्रेरी का उपयोग करता है; इसमें कम कार्य हैं और केवल NumPy में दोहरी सटीकता का समर्थन करता है। उत्तेजित किया। Fftpack_lite के बजाय FFTs के लिए Intel MKL का उपयोग करने के लिए अपने numpy.fft को पैच किया है।
स्टर्ला मोल्डेन

7
NumPy को मूल रूप से scipy.core नाम दिया गया था। NumPy और SciPy बारीकी से संबंधित परियोजनाएं हैं। पृथक्करण का मुख्य कारण यह सुनिश्चित करना है कि सरणी पुस्तकालय (न्यूमपी) दुबला और माध्य है, क्योंकि साइपाय के थोक की हमेशा जरूरत नहीं होती है। इसके अलावा, वैज्ञानिकों के बीच scipy.core के पक्ष में सरणी संकुल संख्यात्मक (MIT) और numarray (NASA) को रिटायर करने का निर्णय था, और इस प्रकार इसे NumPy नाम मिला। SciPy अभी भी 1.0 तक नहीं पहुंचा है, जबकि NumPy को वर्तमान में 1.8.1 के रूप में जारी किया गया है। NumPy में FFT और रैखिक बीजगणित के लिए कुछ सुविधाएं हैं, लेकिन SciPy जितना व्यापक नहीं है।
स्टर्ला मोल्डन

@SturlaMolden के बारे में जानने के लिए अच्छा है उत्साहित, क्या आप जानते हैं कि एनाकोंडा दोनों या सिर्फ एकांत का अनुकूलन करता है?
डैशी

जवाबों:


138

पिछली बार जब मैंने इसकी जाँच की थी, तो स्कैपी __init__पद्धति निष्पादित होती है

from numpy import *

इतना है कि जब खस्ता मॉड्यूल आयात किया जाता है तो पूरे खसखस ​​नामस्थान को स्काइप में शामिल किया जाता है।

log10आप जिस व्यवहार का वर्णन कर रहे हैं वह दिलचस्प है, क्योंकि दोनों संस्करण सुन्न से आ रहे हैं। एक एक है ufunc, दूसरा एक numpy.libफ़ंक्शन है। क्यों डरपोक पुस्तकालय समारोह को पसंद कर रहे हैं ufunc, मुझे अपने सिर के ऊपर से पता नहीं है।


संपादित करें: वास्तव में, मैं log10प्रश्न का उत्तर दे सकता हूं । Scipy में देख रहे हैं __init__विधि मैं इस देखें:

# Import numpy symbols to scipy name space
import numpy as _num
from numpy import oldnumeric
from numpy import *
from numpy.random import rand, randn
from numpy.fft import fft, ifft
from numpy.lib.scimath import *

log10आपको स्कैपी में मिलने वाला फंक्शन आता है numpy.lib.scimath। उस कोड को देखते हुए, यह कहता है:

"""
Wrapper functions to more user-friendly calling of certain math functions
whose output data-type is different than the input data-type in certain
domains of the input.

For example, for functions like log() with branch cuts, the versions in this
module provide the mathematically valid answers in the complex plane:

>>> import math
>>> from numpy.lib import scimath
>>> scimath.log(-math.exp(1)) == (1+1j*math.pi)
True

Similarly, sqrt(), other base logarithms, power() and trig functions are
correctly handled.  See their respective docstrings for specific examples.
"""

ऐसा लगता है कि मॉड्यूल ओवरले के लिए आधार numpy ufuncs sqrt, log, log2, logn, log10, power, arccos, arcsin, और arctanh। यह आपके द्वारा देखे जा रहे व्यवहार की व्याख्या करता है। अंतर्निहित डिज़ाइन कारण कि ऐसा क्यों किया जाता है, शायद कहीं मेलिंग सूची पोस्ट में दफन है।


10
कुछ समय के लिए इन पैकेजों के साथ पूरा समय काम करने के बाद, यहां मुझे इसके बारे में जो अहसास होता है: न्यूमपेरिकल एरियर्स के लिए एक लाइब्रेरी होना है, जिसका उपयोग किसी भी व्यक्ति को पायथन में इस तरह की वस्तु की आवश्यकता होती है। SciPy का अर्थ वैज्ञानिकों / इंजीनियरों के लिए एक पुस्तकालय होना है, इसलिए यह अधिक कठोर सैद्धांतिक गणित (इस प्रकार log10 के जटिल संख्या संस्करण और इसी तरह) के लिए है। मुख्य भ्रम इस तथ्य से आता है कि NumPy कई पुराने उप-मॉड्यूल (जो कि Scipy में जाना चाहिए था) को बरकरार रखता है, जो उस समय शामिल थे जब SciPy / NumPy के बीच सीमांकन आज की तरह स्पष्ट नहीं था।
फिलामके

@PhilMacKay हाय फिल, मैंने इसे और आपके अन्य पोस्ट को 2013 से इस सुन्न / डरावना प्रश्न के लिए विशिष्ट पढ़ा। मेरा सवाल यह है कि क्या आपकी राय अभी भी चालू है, जैसा कि आपकी टिप्पणी में अच्छी तरह से कहा गया है? मैंने देखा कि पोस्टर ने कहा कि scipy में कुछ गैर-समकक्ष हैं और उदाहरणों के रूप में abs, max और min को सूचीबद्ध करता है, लेकिन मैं समझता हूं कि abs केवल numpy.absolute के लिए एक उपनाम है और एक scipy.absolute, scipy.maximum और scipy है ।न्यूनतम। तो अब तक के अपने अनुभव में क्या आपको कभी खांसी का आयात करने की आवश्यकता है अगर आप पहले से ही ज़रूरतमंद हैं?
डैन बॉशेन

@PhilMacKay ऐसा लगता है कि आम सहमति उनके प्रासंगिक उपयोग के मामलों के लिए SciPy के सबमॉड्यूल पुस्तकालयों का उपयोग करना है, और फिर कोर NumPy संचालन के लिए विशेष रूप से NumPy को आयात करने के लिए (इसके बजाय SciPy के शीर्ष स्तर के लिए जिसे आपको आयात करने की आवश्यकता होगी) )। किसी कारण से यह दूसरों द्वारा और साथ ही SciPy प्रलेखन बेहतर कोडिंग अभ्यास के रूप में कहा गया है और मैं यह समझने की कोशिश कर रहा हूं कि यह क्यों मायने रखेगा। मैं यह मानता हूं क्योंकि यह सम्मेलन का मामला है और इसलिए पठनीयता है। आपकी वर्तमान राय क्या है?
डैन बॉशेन

@DanBoschen नवंबर 2018 तक, मैं अभी भी अपनी टिप्पणी के साथ खड़ा हूं। SciPy को आयात करना जब केवल NumPy की आवश्यकता होती है, तो थोड़ा ओवरकिल हो सकता है। दूसरी ओर, SciPy लोड होने पर NumPy आयात किया जाता है, इसलिए SciPy के अलावा NumPy को आयात करने की कोई आवश्यकता नहीं है। बेशक, प्रलेखन का पालन करने के लिए अच्छे तर्क हैं, इसलिए ऐसा करने के लिए स्वतंत्र महसूस करें जो आपकी अपनी स्थिति में सबसे अधिक प्रासंगिक है।
PhilMacKay

@PhilMacKay आपके इनपुट के लिए धन्यवाद। यह मेरे विचार के माध्यम से सोचा कि क्यों यह सुन्नत आयात करने का सुझाव दिया गया है (भले ही सब कुछ डरावना में किया जा सकता है) सम्मेलन का विषय है और इसलिए साझा कोड के लिए पठनीयता है। यदि सभी विशिष्ट विशिष्ट कोड को विशेष रूप से सुपी लाइब्रेरी में बांधा जाता है, तो इसे और अधिक आसानी से बड़े स्केपी लाइब्रेरी में बांधने से दूर किया जा सकता है जिसमें बहुत अधिक शामिल होता है जिसकी हमेशा आवश्यकता नहीं होती है। उन्होंने कहा कि मेरा विचार (मेरे अपने दृष्टिकोण के लिए) सुन्न आयात करना है और फिर शीर्ष स्तर की थपकी को आयात नहीं करना है, लेकिन केवल आवश्यकतानुसार ही उप-उप-भागों को आयात करना है।
डैन बोशेन

52

SciPy संदर्भ गाइड से:

... सभी Numpy फ़ंक्शंस scipy नामस्थान में रखे गए हैं, ताकि उन सभी फ़ंक्शंस अतिरिक्त रूप सेumpy आयात किए बिना उपलब्ध हों।

इरादा उपयोगकर्ताओं के लिए scipyऔर numpyनामस्थान के बीच अंतर जानने का नहीं है , हालांकि स्पष्ट रूप से आपको एक अपवाद मिला है।


50

SciPy FAQ से लगता है कि NumPy के कुछ कार्य ऐतिहासिक कारणों से यहां हैं जबकि यह केवल SciPy में होना चाहिए:

NumPy और SciPy में क्या अंतर है?

एक आदर्श दुनिया में, NumPy में सरणी डेटा प्रकार और सबसे बुनियादी कार्यों के अलावा कुछ भी नहीं होगा: अनुक्रमण, छंटाई, पुनर्वसन, मूल तत्व-कार्य, एट ​​वगैरह। सभी संख्यात्मक कोड SciPy में निवास करेंगे। हालाँकि, NumPy का एक महत्वपूर्ण लक्ष्य संगतता है, इसलिए NumPy अपने सभी पूर्ववर्तियों द्वारा समर्थित सभी सुविधाओं को बनाए रखने की कोशिश करता है। इस प्रकार NumPy में कुछ रेखीय बीजगणित कार्य होते हैं, भले ही ये SciPy में अधिक अच्छी तरह से हों। किसी भी स्थिति में, SciPy में रैखिक बीजगणित मॉड्यूल के अधिक पूर्ण रूप से चित्रित संस्करण हैं, साथ ही कई अन्य संख्यात्मक एल्गोरिदम भी हैं। यदि आप अजगर के साथ वैज्ञानिक कंप्यूटिंग कर रहे हैं, तो आपको संभवतः NumPy और SciPy दोनों को स्थापित करना चाहिए। अधिकांश नई सुविधाएँ NumPy के बजाय SciPy में हैं।

यह बताता है कि क्यों scipy.linalg.solveकुछ अतिरिक्त सुविधाएँ प्रदान करता है numpy.linalg.solve

मैंने संबंधित प्रश्न के लिए सेठमोर्टन का उत्तर नहीं देखा


12

SciPy प्रलेखन के अंत में एक छोटी टिप्पणी है :

एक और उपयोगी कमांड है source। जब पायथन में लिखित एक फ़ंक्शन को एक तर्क के रूप में दिया जाता है, तो यह उस फ़ंक्शन के लिए स्रोत कोड की एक सूची प्रिंट करता है। यह एक एल्गोरिथ्म के बारे में सीखने या ठीक से समझने में मददगार हो सकता है कि एक फ़ंक्शन अपने तर्कों के साथ क्या कर रहा है। पायथन कमांड डायर के बारे में भी मत भूलना, जिसका उपयोग किसी मॉड्यूल या पैकेज के नामस्थान को देखने के लिए किया जा सकता है।

मुझे लगता है कि यह किसी को सभी पैकेजों के पर्याप्त ज्ञान के साथ अलग-अलग चुनने के लिए अनुमति देगा, जो कि कुछ डरावनी और खस्ता कार्यों के बीच अंतर हैं (यह मुझे लॉगजी 10 प्रश्न के साथ बिल्कुल भी मदद नहीं करता है)। मेरे पास निश्चित रूप से वह ज्ञान नहीं है, लेकिन sourceयह इंगित करता है कि scipy.linalg.solveऔर numpy.linalg.solveअलग-अलग तरीकों से लैपैक के साथ बातचीत करता है;

Python 2.4.3 (#1, May  5 2011, 18:44:23) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
>>> import scipy
>>> import scipy.linalg
>>> import numpy
>>> scipy.source(scipy.linalg.solve)
In file: /usr/lib64/python2.4/site-packages/scipy/linalg/basic.py

def solve(a, b, sym_pos=0, lower=0, overwrite_a=0, overwrite_b=0,
          debug = 0):
    """ solve(a, b, sym_pos=0, lower=0, overwrite_a=0, overwrite_b=0) -> x

    Solve a linear system of equations a * x = b for x.

    Inputs:

      a -- An N x N matrix.
      b -- An N x nrhs matrix or N vector.
      sym_pos -- Assume a is symmetric and positive definite.
      lower -- Assume a is lower triangular, otherwise upper one.
               Only used if sym_pos is true.
      overwrite_y - Discard data in y, where y is a or b.

    Outputs:

      x -- The solution to the system a * x = b
    """
    a1, b1 = map(asarray_chkfinite,(a,b))
    if len(a1.shape) != 2 or a1.shape[0] != a1.shape[1]:
        raise ValueError, 'expected square matrix'
    if a1.shape[0] != b1.shape[0]:
        raise ValueError, 'incompatible dimensions'
    overwrite_a = overwrite_a or (a1 is not a and not hasattr(a,'__array__'))
    overwrite_b = overwrite_b or (b1 is not b and not hasattr(b,'__array__'))
    if debug:
        print 'solve:overwrite_a=',overwrite_a
        print 'solve:overwrite_b=',overwrite_b
    if sym_pos:
        posv, = get_lapack_funcs(('posv',),(a1,b1))
        c,x,info = posv(a1,b1,
                        lower = lower,
                        overwrite_a=overwrite_a,
                        overwrite_b=overwrite_b)
    else:
        gesv, = get_lapack_funcs(('gesv',),(a1,b1))
        lu,piv,x,info = gesv(a1,b1,
                             overwrite_a=overwrite_a,
                             overwrite_b=overwrite_b)

    if info==0:
        return x
    if info>0:
        raise LinAlgError, "singular matrix"
    raise ValueError,\
          'illegal value in %-th argument of internal gesv|posv'%(-info)

>>> scipy.source(numpy.linalg.solve)
In file: /usr/lib64/python2.4/site-packages/numpy/linalg/linalg.py

def solve(a, b):
    """
    Solve the equation ``a x = b`` for ``x``.

    Parameters
    ----------
    a : array_like, shape (M, M)
        Input equation coefficients.
    b : array_like, shape (M,)
        Equation target values.

    Returns
    -------
    x : array, shape (M,)

    Raises
    ------
    LinAlgError
        If `a` is singular or not square.

    Examples
    --------
    Solve the system of equations ``3 * x0 + x1 = 9`` and ``x0 + 2 * x1 = 8``:

    >>> a = np.array([[3,1], [1,2]])
    >>> b = np.array([9,8])
    >>> x = np.linalg.solve(a, b)
    >>> x
    array([ 2.,  3.])

    Check that the solution is correct:

    >>> (np.dot(a, x) == b).all()
    True

    """
    a, _ = _makearray(a)
    b, wrap = _makearray(b)
    one_eq = len(b.shape) == 1
    if one_eq:
        b = b[:, newaxis]
    _assertRank2(a, b)
    _assertSquareness(a)
    n_eq = a.shape[0]
    n_rhs = b.shape[1]
    if n_eq != b.shape[0]:
        raise LinAlgError, 'Incompatible dimensions'
    t, result_t = _commonType(a, b)
#    lapack_routine = _findLapackRoutine('gesv', t)
    if isComplexType(t):
        lapack_routine = lapack_lite.zgesv
    else:
        lapack_routine = lapack_lite.dgesv
    a, b = _fastCopyAndTranspose(t, a, b)
    pivots = zeros(n_eq, fortran_int)
    results = lapack_routine(n_eq, n_rhs, a, n_eq, pivots, b, n_eq, 0)
    if results['info'] > 0:
        raise LinAlgError, 'Singular matrix'
    if one_eq:
        return wrap(b.ravel().astype(result_t))
    else:
        return wrap(b.transpose().astype(result_t))

यह मेरी पहली पोस्ट भी है तो अगर मुझे यहाँ कुछ बदलना चाहिए तो कृपया मुझे बताएं।


अंतर्निहित आवरण बहुत अलग हैं। NumPy C. में लिखी एक पतली परत का उपयोग करता है। SciPy एक परत का उपयोग करता है जिसका उपयोग f2py द्वारा स्वतः पूर्ण किया जाता है। SciPy हमेशा बाहरी LAPACK लाइब्रेरी से जुड़ता है। यदि कोई बाहरी LAPACK नहीं मिला है तो NumPy उपयोगों का अपना f2c'd lapack_lite है।
स्टर्ला मोलडेन

8

विकिपीडिया ( http://en.wikipedia.org/wiki/NumPy#History ) से:

न्यूमेरिक कोड को न्यूएरे की उपन्यास विशेषताओं को लागू करने के लिए इसे अधिक बनाए रखने और लचीला बनाने के लिए अनुकूलित किया गया था। यह नया प्रोजेक्ट SciPy का हिस्सा था। एक सरणी ऑब्जेक्ट प्राप्त करने के लिए पूरे पैकेज को स्थापित करने से बचने के लिए, इस नए पैकेज को अलग कर दिया गया और इसे NumPy कहा गया।

scipyसुविधा के लिए अपने नाम स्थान में numpyकई numpyकार्यों पर निर्भर करता है और आयात करता है ।


4

लिनेगल पैकेज के बारे में - स्कैपी फ़ंक्शन लैपैक और ब्लास कहलाएंगे, जो कई प्लेटफार्मों पर अत्यधिक अनुकूलित संस्करणों में उपलब्ध हैं और विशेष रूप से बड़े घने मैट्रिस पर संचालन के लिए बहुत अच्छा प्रदर्शन प्रदान करते हैं। दूसरी ओर, वे संकलन करने के लिए आसान पुस्तकालय नहीं हैं, पूर्ण प्रदर्शन प्राप्त करने के लिए एक फोरट्रान संकलक और कई मंच विशिष्ट चोटियों की आवश्यकता होती है। इसलिए, खस्ता कई सामान्य रैखिक बीजगणित कार्यों के सरल कार्यान्वयन प्रदान करता है जो अक्सर कई उद्देश्यों के लिए पर्याप्त होते हैं।


numpy 1.10 में एक अच्छा मॉड्यूल है dual: "इस मॉड्यूल का उपयोग numpy और scipy दोनों में फ़ंक्शंस के लिए किया जाना चाहिए, यदि आप numpy संस्करण का उपयोग करना चाहते हैं यदि उपलब्ध हो, लेकिन स्केपी संस्करण अन्यथा।" उपयोग ---from numpy.dual import fft, inv
डेनिस

1

' मात्रात्मक अर्थशास्त्र ' पर व्याख्यान से

SciPy एक ऐसा पैकेज है जिसमें विभिन्न उपकरण होते हैं जो कि NumPy के शीर्ष पर बने होते हैं, इसके सरणी डेटा प्रकार और संबंधित कार्यक्षमता का उपयोग करते हैं

वास्तव में, जब हम SciPy आयात करते हैं तो हमें NumPy भी मिलता है, जैसा कि SciPy initialization फ़ाइल से देखा जा सकता है

# Import numpy symbols to scipy name space
import numpy as _num
linalg = None
from numpy import *
from numpy.random import rand, randn
from numpy.fft import fft, ifft
from numpy.lib.scimath import *

__all__  = []
__all__ += _num.__all__
__all__ += ['randn', 'rand', 'fft', 'ifft']

del _num
# Remove the linalg imported from numpy so that the scipy.linalg package can be
# imported.
del linalg
__all__.remove('linalg')

हालाँकि, यह स्पष्ट रूप से NumPy कार्यक्षमता का उपयोग करने के लिए अधिक सामान्य और बेहतर अभ्यास है

import numpy as np

a = np.identity(3)

SciPy में जो उपयोगी है वह इसके उप-पैकेजों में कार्यक्षमता है

  • scipy.optimize, scipy.integrate, scipy.stats, आदि।

1
मैं आपकी टिप्पणी देखता हूं कि स्पष्ट रूप से NumPy कार्यक्षमता का उपयोग करना बेहतर अभ्यास है, और मैं इस गूंज को SciPy ट्यूटोरियल सहित अन्य जगहों पर देखता हूं, लेकिन यह बेहतर अभ्यास क्यों है? इसका जवाब किसी को नहीं लगता। यदि आप पहले से ही SciPy आयात कर रहे हैं और इसमें NumPy कार्यक्षमता शामिल है, तो अभी भी NumPy आयात करना बेहतर क्यों है? क्या यह है कि जब हम SciPy में एक सबपैकेज आयात करते हैं, तो हम शीर्ष स्तर पर आयात नहीं कर रहे हैं, और इसलिए SciPy को विशेष रूप से आयात करने के लिए कदम उठाने के बजाय, हमें बस उन मुख्य सरणी प्रसंस्करण कार्यों के लिए Numpy आयात करना चाहिए?
डैन बॉशेन

1

SciPy FAQ के अलावा दोहराव का वर्णन मुख्य रूप से पश्चगामी संगतता के लिए किया जाता है, यह कहना है कि NumPy प्रलेखन में यह स्पष्ट किया गया है कि

वैकल्पिक रूप से SciPy- त्वरित दिनचर्या (numpy.dual)

कार्यों के लिए उपनाम जो कि स्किप द्वारा त्वरित किया जा सकता है।

SciPy को FFT, रैखिक बीजगणित और विशेष कार्यों के लिए त्वरित या अन्यथा बेहतर पुस्तकालयों का उपयोग करने के लिए बनाया जा सकता है। यह मॉड्यूल डेवलपर्स को SciPy उपलब्ध होने पर इन त्वरित कार्यों को पारदर्शी रूप से समर्थन करने की अनुमति देता है लेकिन फिर भी उन उपयोगकर्ताओं का समर्थन करता है जिन्होंने केवल NumPy स्थापित किया है।

संक्षिप्तता के लिए, ये हैं:

  • रेखीय बीजगणित
  • FFT
  • पहली तरह का संशोधित बेसेल फ़ंक्शन, ऑर्डर 0

इसके अलावा, SciPy ट्यूटोरियल से :

SciPy के शीर्ष स्तर में NumPy और numpy.lib.scimath के कार्य शामिल हैं। हालांकि, इसके बजाय उन्हें सीधे NumPy मॉड्यूल से उपयोग करना बेहतर है।

तो, नए अनुप्रयोगों के लिए, आपको उन सरणी परिचालनों के NumPy संस्करण को पसंद करना चाहिए जो SciPy के शीर्ष स्तर में डुप्लिकेट हैं। ऊपर सूचीबद्ध डोमेन के लिए, आपको SciPy में उन लोगों को पसंद करना चाहिए और यदि NumPy में आवश्यक हो तो पिछड़े संगतता की जांच करें।

मेरे व्यक्तिगत अनुभव में, मेरे द्वारा उपयोग किए जाने वाले अधिकांश फ़ंक्शन फ़ंक्शन NumPy के शीर्ष स्तर (छोड़कर random) में मौजूद हैं। हालाँकि, सभी डोमेन विशिष्ट रूटीन SciPy के उप-पैकेज में मौजूद हैं, इसलिए मैं शायद ही कभी SciPy के शीर्ष स्तर से कुछ भी उपयोग करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.