সায়পি ও নুমপির মধ্যে সম্পর্ক


253

সায়পি তার নিজের নামস্থানে NumPy এর বেশিরভাগ (তবে সমস্ত [1]) সরবরাহ করে না বলে মনে হয়। অন্য কথায়, যদি কোনও ফাংশন নামকরণ করা হয় numpy.fooতবে অবশ্যই একটি আছে scipy.foo। বেশিরভাগ সময়, দু'জন হুবহু একই রকম হয়, প্রায়শই এমনকি একই ফাংশন অবজেক্টের দিকেও ইঙ্গিত করে।

কখনও কখনও, তারা আলাদা। সম্প্রতি প্রকাশিত একটি উদাহরণ দেওয়ার জন্য:

  • numpy.log10নেফসকে নেতিবাচক যুক্তির জন্য ফেরৎ দেয় এমন একটি ইউফুঙ্ক ;
  • scipy.log10 নেতিবাচক যুক্তিগুলির জন্য জটিল মানগুলি প্রদান করে এবং ufunc বলে মনে হয় না।

একই সম্পর্কে বলা যেতে পারে log, log2এবং logn, তবে log1p[2] সম্পর্কে নয় ।

অন্যদিকে, 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নামস্থান।

[2] NumPy 1.5.1 এবং SciPy 0.9.0rc2 ব্যবহার করে পরীক্ষিত।


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। এখন আমি অবাক হয়েছি, কারণ আমি নম্পু এবং স্কিপি সম্পর্কে পোস্টগুলি অনুসরণ করি এবং এটি নিজেই ব্যবহার করি। এবং আমি প্রায় সর্বদা দেখতে পাই যে নম্পটি আলাদাভাবে আমদানি করা হচ্ছে (এনপি হিসাবে)। তাহলে তারা ব্যর্থ?
জোরিস

8
সেখানে scipy এবং numpy মধ্যে কিছু পার্থক্য হয় FFT কাপড়, আমি একবার একটি সমস্যাটি হল এই যে অবশেষে scipy প্রয়োজন এবং rfft এর numpy এর সংস্করণ সংজ্ঞায়িত ভিন্নভাবে অনুসরণ করা কামড়াল পেয়েছিলাম
Wim

1
SciPy এবং NumPy এর FFT গুলি আলাদা are সাইকপি ফোর্টরান লাইব্রেরি এফএফটিপিএকে ব্যবহার করে, তাই নামটি স্কিপি.ফিটপ্যাক ack নুমপি fftpack_lite নামে একটি সি লাইব্রেরি ব্যবহার করে; এর কম ফাংশন রয়েছে এবং এটি কেবল NumPy এ ডাবল স্পষ্টতা সমর্থন করে। প্রবৃত্ত ইনক। fftpack_lite এর পরিবর্তে এফএফটিগুলির জন্য ইন্টেল এমকেএল ব্যবহার করার জন্য তাদের নম্পি.ফ্টটি প্যাচ করেছে।
স্টুরলা মোল্ডেন

7
নুমপাইয়ের মূল নাম ছিল স্কিপি কোড ore NumPy এবং SciPy নিবিড়ভাবে সম্পর্কিত প্রকল্প। বিচ্ছেদের মূল কারণটি অ্যারে লাইব্রেরি (নুমপি) হ'ল হ'ল এবং গড় হওয়া নিশ্চিত করা, কারণ সাইকপাইয়ের সর্বাধিক পরিমাণে সর্বদা প্রয়োজন হয় না। এছাড়াও, বিজ্ঞানীদের মধ্যে স্কিপি কোডরের পক্ষে অ্যারে প্যাকেজ সংখ্যা (এমআইটি) এবং সংখ্যা (নাসা) অবসর নেওয়ার সিদ্ধান্ত হয়েছিল এবং এভাবে নামপাম নামটি পেল। SciPy এখনও 1.0 এ পৌঁছেছে না, যেখানে NumPy বর্তমানে 1.8.1 হিসাবে প্রকাশিত হয়েছে। নুমপির এফএফটি এবং লিনিয়ার বীজগণিতের জন্য কিছু সুবিধা রয়েছে তবে সায়পাইয়ের মতো বিস্তৃত নয়।
স্টুরলা মোল্ডেন

@ স্টোরলা মোল্ডেন এনটহোট সম্পর্কে জেনে রাখা ভাল, আপনি কি জানেন যে অ্যানাকোন্ডা উভয়কেই অনুকূল করে ফেলেছে বা কেবল অদ্ভুত?
ছদ্মবেশী

উত্তর:


138

গতবার আমি এটি পরীক্ষা করেছিলাম, স্কিপি __init__পদ্ধতিটি একটি কার্যকর করে

from numpy import *

যাতে স্কিপি মডিউলটি আমদানি করা হয় তখন পুরো অলস নেমস্পেসটি স্কিপিতে অন্তর্ভুক্ত করা হয়।

আপনি যে log10আচরণটি বর্ণনা করছেন তা আকর্ষণীয়, কারণ উভয় সংস্করণই অদ্ভুত। একটি হ'ল একটি ufunc, অন্যটি একটি numpy.libফাংশন। স্কিপি কেন লাইব্রেরির ফাংশনটির চেয়ে বেশি পছন্দ করে ufunc, আমি আমার মাথার উপরের অংশটি জানি না।


সম্পাদনা: আসলে, আমি প্রশ্নের উত্তর দিতে পারি log10। স্কিপি __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 বলতে বিজ্ঞানী / ইঞ্জিনিয়ারদের জন্য একটি গ্রন্থাগার হিসাবে বোঝানো হয়েছে, সুতরাং এটি আরও কঠোর তাত্ত্বিক গণিতের জন্য লক্ষ্যযুক্ত (যেমন লগ 10 এবং এর মতো জটিল সংখ্যা সংস্করণ সহ)। মূল বিভ্রান্তিটি এ থেকে আসে যে নুমপি অনেকগুলি পুরানো সাব-মডিউলগুলি ধরে রাখে (যা স্কিপিতে যাওয়া উচিত ছিল) যখন সায়পি / নুমপির মধ্যে সীমাবদ্ধতা আজকের মতো স্পষ্ট ছিল না তখন অন্তর্ভুক্ত ছিল।
ফিলম্যাকেকে

@ ফিলম্যাককে হাই ফিল, আমি এই এবং আপনার অন্যান্য পোস্টটি 2013 থেকে এই অদ্ভুত / স্কিপি প্রশ্নের সাথে নির্দিষ্ট করে পড়েছি My আমার প্রশ্নটি যদি আপনার মতামতটি এখনও বিদ্যমান থাকে, তবে উপরে আপনার মন্তব্যে ভালভাবে বলা আছে? আমি পোস্টারটি দেখেছি যে স্কিপি-র কিছু অ-সমতুল্য রয়েছে এবং উদাহরণ হিসাবে অ্যাবসকে সর্বাধিক এবং মিনিটে তালিকাবদ্ধ করে, তবে আমি বুঝতে পারি যে অ্যাবস নাম্পি.অবসুলিউটের জন্য কেবলমাত্র একটি নাম এবং সেখানে একটি স্কিপি.অবসুলিউট, স্কিপি.ম্যাক্সিমিয়াম এবং স্কিপি রয়েছে .minimum। সুতরাং এখন পর্যন্ত আপনার অভিজ্ঞতায় আপনার কি কখনও নিম্পী আমদানি করা দরকার যদি আপনি ইতিমধ্যে স্কিপি প্রয়োজন?
ড্যান বোসচেন

@ ফিলম্যাককে মনে হচ্ছে যে সাধারণ sensক্যমত্যটি তাদের প্রাসঙ্গিক ব্যবহারের ক্ষেত্রে সায়পাইয়ের সাবমডিউল লাইব্রেরিগুলি ব্যবহার করবে এবং তারপরে মূল নম্পপি ক্রিয়াকলাপগুলি নির্দিষ্টভাবে NumPy আমদানি করবে (সায়পাইয়ের শীর্ষ স্তরের পরিবর্তে যা আপনাকে অন্যথায় আমদানি করতে হবে) )। কিছু কারণে এটি অন্যদের দ্বারা পাশাপাশি সাইকপাই ডকুমেন্টেশনকে আরও ভাল কোডিং অনুশীলন হিসাবে বর্ণনা করেছে এবং আমি কেন চেষ্টা করব তা বোঝার চেষ্টা করছি। আমি ধরে নিলাম এটি কারণ এটি কনভেনশন এবং তাই পাঠযোগ্যতার বিষয়। আপনার বর্তমান মতামত কি?
ড্যান বোশেন

@ ড্যানবোশেন নভেম্বর 2018 পর্যন্ত, আমি এখনও উপরে আমার মন্তব্যে দাঁড়িয়ে আছি। যখন স্রেফ NumPy প্রয়োজন হয় তখন সাইকপাই আমদানি করা কিছুটা ওভারকিল হতে পারে। অন্যদিকে, সিম্পাই লোড হয়ে গেলে নুমপি আমদানি করা হয়, তাই সায়পি ছাড়াও নুমপি আমদানি করার দরকার নেই। অবশ্যই, ডকুমেন্টেশন অনুসরণ করার জন্য ভাল যুক্তি আছে, তাই আপনার নিজের পরিস্থিতিতে সবচেয়ে প্রাসঙ্গিক কি করতে নির্দ্বিধায়।
ফিলম্যাকেকে

@ ফিলম্যাককে আপনার ইনপুটটির জন্য ধন্যবাদ। আমার অনুমানের মাধ্যমে এটি ভাবা কেন এটি নপি (কেন সবকিছুর স্কিপিতে করা যায়) আমদানির পরামর্শ দেওয়া হচ্ছে এটি কনভেনশন এবং তাই তাই ভাগ করা কোডের জন্য পাঠযোগ্যতা। যদি সমস্ত নমুনা নির্দিষ্ট কোডটি বিশেষত নম্র লাইব্রেরিতে বাঁধা থাকে তবে বৃহত্তর স্কিপি লাইব্রেরিতে বাঁধা থেকে আরও সহজেই ভেঙে ফেলা যেতে পারে যার মধ্যে সবসময় প্রয়োজন হয় না এমন আরও অনেক কিছু রয়েছে। এটি বলেছিল যে আমার ধারণাটি (আমার নিজের পদ্ধতির জন্য) নম্পিটি আমদানি করা এবং তারপরে শীর্ষ স্তরের স্কিপি আমদানি করা নয় কেবল প্রয়োজন অনুসারে স্কিপি সাবপ্যাকেজগুলি আমদানি করা।
ড্যান বোসচেন

52

সায়পি রেফারেন্স গাইড থেকে:

... সমস্ত নম্পি ফাংশন নামফলকে সাবস্ক্রাইব করা হয়েছে scipy যাতে অতিরিক্ত সমস্ত নমুনি আমদানি না করেই সমস্ত ফাংশন উপলব্ধ থাকে।

উদ্দেশ্যটি হ'ল ব্যবহারকারীদের নাম scipyএবং numpyনামের স্পেসের মধ্যে পার্থক্য না জানা উচিত , যদিও আপাতদৃষ্টিতে আপনি একটি ব্যতিক্রম খুঁজে পেয়েছেন।


50

সায়পাই এফএকিউ থেকে মনে হচ্ছে নুমপি থেকে কিছু ফাংশন historicalতিহাসিক কারণে এখানে রয়েছে তবে এটি কেবল সায়পাইতে থাকা উচিত:

NumPy এবং SciPy এর মধ্যে পার্থক্য কী?

একটি আদর্শ বিশ্বে NumPy এ অ্যারে ডেটা টাইপ এবং সর্বাধিক বুনিয়াদি ক্রিয়াকলাপ ছাড়া কিছুই থাকত না: সূচীকরণ, বাছাই করা, পুনরায় আকার নির্ধারণ করা, মৌলিক উপাদানগুলির ক্রিয়াকলাপ এবং ইত্যাদি te সমস্ত সংখ্যার কোড সায়পাইতে থাকবে। যাইহোক, NumPy এর অন্যতম গুরুত্বপূর্ণ লক্ষ্য হল সামঞ্জস্যতা, সুতরাং NumPy তার পূর্বসূরীদের উভয়ের দ্বারা সমর্থিত সমস্ত বৈশিষ্ট্য ধরে রাখার চেষ্টা করে। এইভাবে NumPy কিছু লিনিয়ার বীজগণিত ফাংশন রয়েছে যদিও এগুলি আরও সঠিকভাবে SciPy এর সাথে সম্পর্কিত belong যাই হোক না কেন, সাইকপাইতে রৈখিক বীজগণিত মডিউলগুলির আরও অনেকগুলি বৈশিষ্ট্যযুক্ত সংস্করণ রয়েছে, পাশাপাশি আরও অনেকগুলি সংখ্যার অ্যালগোরিদম রয়েছে। আপনি যদি পাইথনের সাথে বৈজ্ঞানিক কম্পিউটিং করছেন, আপনার সম্ভবত নুমপি এবং সায়পি উভয়ই ইনস্টল করা উচিত। সর্বাধিক নতুন বৈশিষ্ট্য NumPy এর চেয়ে SciPy এর অন্তর্ভুক্ত।

এটি ব্যাখ্যা করে যে কেন scipy.linalg.solveকিছু অতিরিক্ত বৈশিষ্ট্য দেওয়া রয়েছেnumpy.linalg.solve

সম্পর্কিত প্রশ্নের উত্তর আমি শেঠমোর্টনের দেখিনি


12

সায়পাই ডকুমেন্টেশনের ভূমিকা শেষে একটি সংক্ষিপ্ত মন্তব্য রয়েছে :

আর একটি দরকারী আদেশ হ'ল 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))

এটিও আমার প্রথম পোস্ট তাই এখানে যদি আমার কিছু পরিবর্তন হয় তবে দয়া করে আমাকে জানান।


অন্তর্নিহিত মোড়কগুলি খুব আলাদা। নুমপি সি-র লিখিত একটি পাতলা স্তর ব্যবহার করে। সাইপপি f2py দ্বারা স্বয়ংক্রিয়ভাবে উত্পন্ন একটি স্তর ব্যবহার করে। SciPy সর্বদা একটি বাহ্যিক ল্যাপাক লাইব্রেরির সাথে লিঙ্ক করে। যদি কোনও বাহ্যিক ল্যাপাক না পাওয়া যায় তবে নুমপি ব্যবহারগুলির নিজস্ব f2c'd ল্যাপ্যাক_লাইট রয়েছে।
স্টুরলা মলডেন

8

উইকিপিডিয়া থেকে ( http://en.wikedia.org/wiki/NumPy# ইতিহাস ):

নুমারিক কোডটি এটিকে আরও রক্ষণাবেক্ষণযোগ্য এবং নমনারির অভিনব বৈশিষ্ট্যগুলি প্রয়োগ করার জন্য যথেষ্ট নমনীয় করে তুলতে অভিযোজিত হয়েছিল। এই নতুন প্রকল্পটি সায়পাইয়ের অংশ ছিল। কেবলমাত্র একটি অ্যারে অবজেক্ট পেতে পুরো প্যাকেজটি ইনস্টল করা এড়াতে এই নতুন প্যাকেজটি পৃথক করে NumPy বলা হয়েছিল।

scipyসুবিধার্থে এর নেমস্পেসে numpyঅনেকগুলি numpyক্রিয়া নির্ভর করে এবং আমদানি করে ।


4

লিনালগ প্যাকেজ সম্পর্কিত - স্কিপি ফাংশনগুলি ল্যাপ এবং ব্লাডগুলি কল করবে যা অনেক প্ল্যাটফর্মগুলিতে অত্যন্ত অনুকূলিত সংস্করণে পাওয়া যায় এবং বিশেষত যুক্তিযুক্ত বড় ঘন ম্যাট্রিক্সের ক্রিয়াকলাপের জন্য খুব ভাল পারফরম্যান্স সরবরাহ করে। অন্যদিকে, তারা সংকলন করার জন্য সহজ লাইব্রেরি নয়, পুরো পারফরম্যান্স পেতে একটি ফোর্টারান সংকলক এবং অনেক প্ল্যাটফর্ম নির্দিষ্ট টুইটগুলি দরকার aks অতএব, নিম্পি অনেকগুলি সাধারণ লিনিয়ার বীজগণিত ফাংশনগুলির সহজ বাস্তবায়ন সরবরাহ করে যা প্রায়শই বিভিন্ন উদ্দেশ্যে যথেষ্ট ভাল।


নম্পি 1.10 এর একটি দুর্দান্ত মডিউল রয়েছে dual: "এই মডিউলটি যদি আপনি নিমপী সংস্করণ উপলব্ধ থাকে তবে অন্যথায় স্কিপি সংস্করণটি ব্যবহার করতে চান তবে নপি এবং স্কিপি উভয় ফাংশনের জন্যই ব্যবহার করা উচিত" " ব্যবহার ---from numpy.dual import fft, inv
ডিসি

1

' পরিমাণগত অর্থনীতি ' সম্পর্কিত বক্তৃতা থেকে

SciPy এমন একটি প্যাকেজ যা এতে বিভিন্ন সরঞ্জাম রয়েছে যা NumPy এর উপরে নির্মিত হয়, এর অ্যারের ডেটা টাইপ এবং সম্পর্কিত কার্যকারিতা ব্যবহার করে

প্রকৃতপক্ষে, যখন আমরা SciPy আমদানি করি তখন আমরা NumPyও পাই, যেমন সাইপাই সূচনা ফাইল থেকে দেখা যায়

# 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.optimize, scipy.integrate, scipy.stats, ইত্যাদি

1
আমি আপনার মন্তব্যটি দেখতে পাচ্ছি যে NumPy কার্যকারিতা স্পষ্টভাবে ব্যবহার করা আরও ভাল অনুশীলন, এবং আমি এটি সাইকপি টিউটোরিয়াল সহ অন্য কোথাও প্রতিধ্বনিত দেখতে পাচ্ছি, তবে কেন এটি আরও ভাল অনুশীলন? কেউ এর উত্তর বলে মনে হচ্ছে না। আপনি যদি ইতিমধ্যে SciPy আমদানি করে থাকেন এবং এতে NumPy কার্যকারিতা অন্তর্ভুক্ত থাকে তবে এখনও NumPy আমদানি করা কেন ভাল? এটি কি যখন আমরা সায়পাইতে একটি সাবপ্যাকেজ আমদানি করি, আমরা শীর্ষ স্তরটি আমদানি করি না, এবং তাই বিশেষত স্কাইপাই আমদানির পদক্ষেপ গ্রহণের পরিবর্তে আমাদের কেবল মূল অ্যারে প্রসেসিংয়ের জন্য নম্পি আমদানি করা উচিত?
ড্যান বোসচেন

1

ডুপ্লিকেশনটি বর্ণনা করে এমন সাইকপাই এফএকিউ ছাড়াও মূলত পিছনের সামঞ্জস্যের জন্য, এটি NumPy ডকুমেন্টেশনে আরও স্পষ্ট করে বলা হয়েছে যে

Ptionচ্ছিকভাবে SciPy- ত্বরণ রুটিন (numpy.dual)

ফাংশনগুলির জন্য উপকরণ যা স্কিপি দ্বারা ত্বরান্বিত হতে পারে।

এফএফটি, লিনিয়ার বীজগণিত এবং বিশেষ ফাংশনগুলির জন্য ত্বরণযুক্ত বা অন্যথায় উন্নত লাইব্রেরিগুলি ব্যবহার করার জন্য সায়পিপি তৈরি করা যেতে পারে। এই মডিউলটি বিকাশকারীদের এই ত্বরণযুক্ত ফাংশনগুলিকে স্বচ্ছভাবে সমর্থন করতে দেয় যখন সায়পিই উপলব্ধ থাকে তবে এখনও কেবলমাত্র নুমপি ইনস্টল করা ব্যবহারকারীদের সমর্থন করে।

বংশবৃদ্ধির জন্য, এগুলি হ'ল:

  • রৈখিক বীজগণিত
  • FFT
  • প্রথম ধরণের পরিবর্তিত বেসেল ফাংশন, 0 আদেশ করুন

এছাড়াও, সায়পাই টিউটোরিয়াল থেকে :

SciPy এর শীর্ষ স্তরের এছাড়াও NumPy এবং numpy.lib.scimath থেকে ফাংশন রয়েছে। তবে এগুলির পরিবর্তে এগুলি সরাসরি NumPy মডিউল থেকে ব্যবহার করা ভাল।

সুতরাং, নতুন অ্যাপ্লিকেশনগুলির জন্য আপনার অ্যারে ক্রিয়াকলাপের NumPy সংস্করণটি পছন্দ করা উচিত যা সাইপাইয়ের শীর্ষ স্তরে নকল করা আছে। উপরের তালিকাভুক্ত ডোমেনগুলির জন্য আপনার স্নিপাইতে পছন্দ করা উচিত এবং নুমপাইতে প্রয়োজনে পশ্চাদপদ সামঞ্জস্যতা পরীক্ষা করা উচিত।

আমার ব্যক্তিগত অভিজ্ঞতায়, আমি ব্যবহৃত বেশিরভাগ অ্যারে ফাংশনগুলি নুমপির শীর্ষ স্তরে উপস্থিত রয়েছে (ব্যতীত random)। যাইহোক, সমস্ত ডোমেন নির্দিষ্ট রুটিনগুলি SciPy এর সাবপ্যাকেজগুলিতে বিদ্যমান, তাই আমি খুব কমই সায়পাইয়ের শীর্ষ স্তর থেকে কিছু ব্যবহার করি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.