scipy.linalg.lapack.get_lapack_funcs¶
- scipy.linalg.lapack.get_lapack_funcs(names, arrays=(), dtype=None, ilp64=False)[源代码]¶
从名称返回可用的LAPACK函数对象。
数组用于确定LAPACK例程的最佳前缀。
- 参数
- names字符串或字符串序列
不带类型前缀的LAPACK函数的名称。
- arraysndarray序列,可选
可以给出数组来确定LAPACK例程的最佳前缀。如果未指定,将使用双精度例程,否则将使用数组中最一般的类型。
- dtype字符串或数据类型,可选
数据类型说明符。在以下情况下不使用 arrays 是非空的。
- ilp64{True,False,‘首选’},可选
是否返回ILP64例程变量。选择“首选”将返回ILP64例程(如果可用),否则返回32位例程。默认值:False
- 退货
- funcs列表
包含找到的函数的列表。
注意事项
此例程自动在Fortran/C接口之间进行选择。只要有可能,Fortran代码就会用于列主顺序的数组。在所有其他情况下,最好使用C代码。
在LAPACK中,命名约定是所有函数都以类型前缀开头,这取决于主体矩阵的类型。对于NumPy类型,它们可以分别是{‘s’,‘d’,‘c’,‘z’}中的一个,并且存储在属性中
typecode
返回的函数的。示例
假设我们想要使用‘?lange’例程来计算数组的选定范数。我们传递数组是为了获得正确的“lange”风格。
>>> import scipy.linalg as LA >>> rng = np.random.default_rng() >>> a = rng.random((3,2)) >>> x_lange = LA.get_lapack_funcs('lange', (a,)) >>> x_lange.typecode 'd' >>> x_lange = LA.get_lapack_funcs('lange',(a*1j,)) >>> x_lange.typecode 'z'
几个LAPACK例程在其内部工作数组具有最佳大小(大到足以进行快速计算,小到可以避免内存浪费)时工作得最好。此大小还由对函数的专用查询确定,该函数通常包装为独立函数,通常表示为
###_lwork
。下面是一个示例,用于?sysv
>>> import scipy.linalg as LA >>> rng = np.random.default_rng() >>> a = rng.random((1000, 1000)) >>> b = rng.random((1000, 1)) * 1j >>> # We pick up zsysv and zsysv_lwork due to b array ... xsysv, xlwork = LA.get_lapack_funcs(('sysv', 'sysv_lwork'), (a, b)) >>> opt_lwork, _ = xlwork(a.shape[0]) # returns a complex for 'z' prefix >>> udut, ipiv, x, info = xsysv(a, b, lwork=int(opt_lwork.real))