2024-06-17 12:19:31 发布
网友
公认的智慧是偏爱scipy.linalg,而不是numpy.linalg函数。在做线性代数时,理想地(并且方便地)我想把numpy.array和{}的功能结合起来,而不必考虑{}。这并不总是可能的,而且可能会变得太令人沮丧。在
scipy.linalg
numpy.linalg
numpy.array
是否有这两个模块的等效函数的比较检查表,以便在scipy.linalg中没有函数的情况下快速确定何时使用numpy.linalg?在
例如,有scipy.linalg.norm()和{},但似乎没有{}和{}的scipy等价物。在
scipy.linalg.norm()
因此,通常的规则是使用scipy.linalg,因为它通常支持numpy.linalg的所有功能。documentation表示:
See alsonumpy.linalg for more linear algebra functions. Note that although scipy.linalg imports most of them, identically named functions from scipy.linalg may offer more or slightly differing functionality.
See also
numpy.linalg for more linear algebra functions. Note that although scipy.linalg imports most of them, identically named functions from scipy.linalg may offer more or slightly differing functionality.
但是,^{}只在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确实提供了^{},但它只返回Frobenius范数中的条件,而^{}支持多个规范。在
因此,通常的规则是使用
scipy.linalg
,因为它通常支持numpy.linalg
的所有功能。documentation表示:但是,^{} 只在NumPy中。在
在这里,我们可以看到两个库提供的函数之间的差异,以及SciPy如何更完整:
请注意,并非所有这些都是函数。在
SciPy确实提供了^{} ,但它只返回Frobenius范数中的条件,而^{} 支持多个规范。在
相关问题 更多 >
编程相关推荐