2016-07-03 6 views
6

प्राप्त किया गया scipy.linalgnumpy.linalg से अधिक कार्यों को प्राथमिकता देना है। रैखिक बीजगणित करने के लिए, आदर्श (और आसानी से) मैं numpy.array और scipy.linalg की कार्यक्षमताओं को कभी भी numpy.linalg की ओर देखे बिना जोड़ना चाहता हूं। यह हमेशा संभव नहीं है और बहुत निराशाजनक हो सकता है।scipy.linalg के बजाय numpy.linalg का उपयोग कब करें?

क्या scipy.linalg में कोई फ़ंक्शन अनुपस्थित होने पर numpy.linalg का उपयोग करने के लिए जल्दी से निर्धारित करने के लिए इन दो मॉड्यूल से समकक्ष कार्यों की तुलनात्मक चेकलिस्ट है?

उदा। scipy.linalg.norm() और numpy.linalg.norm() हैं, लेकिन numpy.linalg.matrix_rank() और numpy.linalg.cond() के कोई उपमान समकक्ष नहीं हैं।

उत्तर

8

तो, सामान्य नियम केवल scipy.linalg का उपयोग करना है क्योंकि यह आम तौर पर सभी numpy.linalg कार्यक्षमता और अधिक का समर्थन करता है।

भी

numpy.linalg अधिक रेखीय बीजगणित कार्यों के लिए: documentation इस कहते हैं। ध्यान दें कि हालांकि scipy.linalg उनमें से अधिकतर आयात करता है, scipy.linalg से समान रूप से नामित फ़ंक्शन अधिक या थोड़ा भिन्न कार्यक्षमता प्रदान कर सकते हैं।

हालांकि, matrix_rank() केवल न्यूम्पी में है।

यहाँ हम दोनों पुस्तकालयों द्वारा प्रदान कार्यों के बीच मतभेदों को देख सकते हैं, और कैसे SciPy अधिक पूरा हो गया है:

In [2]: from scipy import linalg as scipy_linalg 
In [3]: from numpy import linalg as numpy_linalg 
In [4]: dir(scipy_linalg) 
Out[4]: 
[ 
... 
'absolute_import', 
'basic', 
'bench', 
'blas', 
'block_diag', 
'cho_factor', 
'cho_solve', 
'cho_solve_banded', 
'cholesky', 
'cholesky_banded', 
'circulant', 
'companion', 
'coshm', 
'cosm', 
'cython_blas', 
'cython_lapack', 
'decomp', 
'decomp_cholesky', 
'decomp_lu', 
'decomp_qr', 
'decomp_schur', 
'decomp_svd', 
'det', 
'dft', 
'diagsvd', 
'division', 
'eig', 
'eig_banded', 
'eigh', 
'eigvals', 
'eigvals_banded', 
'eigvalsh', 
'expm', 
'expm2', 
'expm3', 
'expm_cond', 
'expm_frechet', 
'find_best_blas_type', 
'flinalg', 
'fractional_matrix_power', 
'funm', 
'get_blas_funcs', 
'get_lapack_funcs', 
'hadamard', 
'hankel', 
'helmert', 
'hessenberg', 
'hilbert', 
'inv', 
'invhilbert', 
'invpascal', 
'kron', 
'lapack', 
'leslie', 
'linalg_version', 
'logm', 
'lstsq', 
'lu', 
'lu_factor', 
'lu_solve', 
'matfuncs', 
'misc', 
'norm', 
'ordqz', 
'orth', 
'orthogonal_procrustes', 
'pascal', 
'pinv', 
'pinv2', 
'pinvh', 
'polar', 
'print_function', 
'qr', 
'qr_delete', 
'qr_insert', 
'qr_multiply', 
'qr_update', 
'qz', 
'rq', 
'rsf2csf', 
's', 
'schur', 
'signm', 
'sinhm', 
'sinm', 
'solve', 
'solve_banded', 
'solve_circulant', 
'solve_continuous_are', 
'solve_discrete_are', 
'solve_discrete_lyapunov', 
'solve_lyapunov', 
'solve_sylvester', 
'solve_toeplitz', 
'solve_triangular', 
'solveh_banded', 
'special_matrices', 
'sqrtm', 
'svd', 
'svdvals', 
'tanhm', 
'tanm', 
'test', 
'toeplitz', 
'tri', 
'tril', 
'triu'] 

In [5]: dir(numpy_linalg) 
Out[5]: 
[ 
... 
'absolute_import', 
'bench', 
'cholesky', 
'cond', 
'det', 
'division', 
'eig', 
'eigh', 
'eigvals', 
'eigvalsh', 
'info', 
'inv', 
'lapack_lite', 
'linalg', 
'lstsq', 
'matrix_power', 
'matrix_rank', 
'multi_dot', 
'norm', 
'pinv', 
'print_function', 
'qr', 
'slogdet', 
'solve', 
'svd', 
'tensorinv', 
'tensorsolve', 
'test'] 

In [6]: 

ध्यान दें कि नहीं इन सब कार्य हैं।

SciPy scipy.linalg.expm_cond() प्रदान करता है, लेकिन यह केवल फ्रोबिनियस मानदंड में स्थिति लौटाता है, जबकि numpy.linalg.cond() कई मानदंडों का समर्थन करता है।

संबंधित मुद्दे