2016-07-03 4 views
6

받은 지혜는 scipy.linalgnumpy.linalg 이상의 기능을 선호하는 것입니다. 이상적으로, 선형 대수학 작업을 수행하는 (편리) 나는 이제까지 numpy.linalg으로 보지 않고 numpy.arrayscipy.linalg의 기능을 결합하고 싶습니다. 항상 가능한 것은 아니며 너무 실망 스러울 수 있습니다.scipy.linalg 대신 numpy.linalg를 사용하는 방법을 알고 계십니까?

scipy.linalg에 기능이없는 경우에 대비하여 numpy.linalg을 사용할시기를 빨리 결정할 수있는이 두 모듈의 동일한 기능의 비교 체크리스트가 있습니까?

scipy.linalg.norm()numpy.linalg.norm()가 있지만 numpy.linalg.matrix_rank()numpy.linalg.cond()의 더 scipy 동등 할 수없는 것으로 보인다.

답변

8

그래서, 일반 규칙은 일반적으로 numpy.linalg의 모든 기능과 더불어 다양한 추가 기능을 지원하는 단지 scipy.linalg을 사용하는 것입니다.

더 선형 대수 함수도

numpy.linalg 다음을 참조하십시오 documentation이 말한다. scipy.linalg이 대부분을 가져 오기는하지만 scipy.linalg에서 동일한 이름의 기능이 더 많거나 약간 다른 기능을 제공 할 수 있습니다.

그러나 matrix_rank()은 NumPy에만 해당됩니다.

는 여기에서 우리는 두 라이브러리가 제공하는 기능의 차이점을 참조 할 수 있습니다 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()을 제공하지만 Frobenius 표준의 조건 만 반환하는 반면 numpy.linalg.cond()은 여러 표준을 지원합니다.

관련 문제