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