用于高性能计算的运算符和求解器。

pyoperators的Python项目详细描述


pyoperators包定义了用于高性能计算的运算符和求解器。这些运算符是多维函数,具有优化和控制的内存管理。如果是线性的,则它们的行为类似于具有稀疏存储空间的矩阵。

更多文档可以在这里找到:http://pchanial.github.io/pyoperators

开始

要定义运算符,需要定义一个直接函数 它将取代通常的矩阵向量运算:

>>> def f(x, out):
...     out[...] = 2 * x

然后,可以实例化Operator

>>> A = pyoperators.Operator(direct=f, flags='symmetric')

定义运算符的另一种方法是定义子类:

>>> from pyoperators import flags, Operator
... @flags.symmetric
... class MyOperator(Operator):
...     def direct(x, out):
...         out[...] = 2 * x
...
... A = MyOperator()

此运算符没有显式形状,它可以处理任何形状的输入:

>>> A(np.ones(5))
array([ 2.,  2.,  2.,  2.,  2.])
>>> A(np.ones((2,3)))
array([[ 2.,  2.,  2.],
       [ 2.,  2.,  2.]])

通过设置symmetric标志,我们确保a的转置是a:

>>> A.T is A
True

对于非显式形状算子,我们通过指定输入形状来得到相应的稠密矩阵:

>>> A.todense(shapein=2)
array([[2, 0],
       [0, 2]])

运算符不必是线性的。许多运算符已经是predefined,例如IdentityOperatorDiagonalOperator或非线性ClipOperator

前面的A矩阵可以更容易地定义如下:

>>> from pyoperators import I
>>> A = 2 * I

其中I是没有显式形状的标识运算符。

运算符可以通过加法、元素乘法或组合组合在一起。注意,如果两个运算符是线性的,则运算符*表示矩阵乘法,否则表示元素乘法:

>>> from pyoperators import I, DiagonalOperator
>>> B = 2 * I + DiagonalOperator(range(3))
>>> B.todense()
array([[2, 0, 0],
       [0, 3, 0],
       [0, 0, 4]])

代数规则可以很容易地附加到运算符上。它们用于简化表达式以加快执行速度。B运算符已缩减为:

>>> B
DiagonalOperator(array([2, ..., 4], dtype=int64), broadcast='disabled', dtype=int64, shapein=3, shapeout=3)

有许多简化方法。例如:

>>> from pyoperators import Operator
>>> C = Operator(flags='idempotent,linear')
>>> C * C is C
True
>>> D = Operator(flags='involutary')
>>> D(D)
IdentityOperator()

要求

要求列表:

  • Python2.6
  • numpy>;=1.6
  • scipy=0.9

可选要求:

  • numexpr(>;=2.0更好)
  • pywavelts:小波变换

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java Webstart“javaws open”标志不适用于多个参数   java ArrayList声明和处理   获取数组中值的百分比(Java)   java将ArrayList转换为字符串以存储在共享首选项中   Java8Lambdas与泛型的结合使用   Scala数组到Java   如何使用java知道webcontainer的路径?   java使用“收集”和“合并”的组背后的算法是什么   java OSGi:在两个不同的包中具有相同的包路径   java混淆了swt画布。重画   java正则表达式,用于5位数逗号分隔的值,例如047000480004900   使用HttpClient显示非ASCI字符的java   水塔计算程序Java中球体体积的计算   java根据给定值调整框架中所有组件的大小   java Builder类中的其他方法(lombok注释)