Python Jython的Numpy模拟

Python Jython的Numpy模拟,python,numpy,matrix,jython,slice,Python,Numpy,Matrix,Jython,Slice,我正在考虑将科学代码从Python移植到Jython,我对是否存在数学库感兴趣 对于Jython,这是: 免费商业使用 具有为Jython设计的方便的矩阵语法-即允许切片、二进制和整数索引、+-*/操作,如matlab和numpy 机器学习和统计路线的额外可用性将是一个优势(或者数据可以容易地转换为一些常见的数据格式,被主要的Java机器学习库所理解) 提前感谢您提供有关此类库的任何信息。不久前,我承担了维护此类软件包的任务。它被称为jnumeric(在上提供并可通过安装) 然而,JNumeri

我正在考虑将科学代码从Python移植到Jython,我对是否存在数学库感兴趣 对于Jython,这是:

  • 免费商业使用
  • 具有为Jython设计的方便的矩阵语法-即允许切片、二进制和整数索引、+-*/操作,如matlab和numpy
  • 机器学习和统计路线的额外可用性将是一个优势(或者数据可以容易地转换为一些常见的数据格式,被主要的Java机器学习库所理解)


    提前感谢您提供有关此类库的任何信息。

    不久前,我承担了维护此类软件包的任务。它被称为jnumeric(在上提供并可通过安装)

    然而,JNumeric有一段奇怪的历史,可以追溯到21世纪初。它在功能上从来没有真正等同于NumPy(甚至是numeric,这是它实际上试图模拟的),虽然它“足够好”满足我们使用它的目的,但在Java程序中使用它作为主要的数字处理器可能不是一个好主意。我们从头开始用Python重写应用程序,这样我们就可以使用NumPy,而不是用Java做向量数学,这是一个非常糟糕的想法。由于这个原因,jnumeric没有得到充分的维护,可能会悄悄地消失在不存在之中

    我最近注意到Github上出现了一个新项目,它可能有一个更光明的未来

    虽然我知道这并不能完全解决你的问题,但我很好奇你为什么要搬到Jython来获取科学代码。Java没有Python所拥有的出色的数字处理和绘图库。像Weka这样的ML库在scikit learn中有Python等价物。像ImageJ这样的成像工具在scikit image中有一个等价物。pandas和Stats模型中存在统计数据包。什么是Python不会抓伤的科学渴望


    如果要移动到Jython,以便与现有的java库进行接口,而Java库不能轻易移植到Python,那么我会考虑Jython。

    我需要尽可能快地对矩阵进行多个算术运算。首先,我知道Python中的多线程无法利用所有CPU,因为GIL限制,多处理可能无法解决问题,因为我需要将非常大的矩阵传递给每个进程,这可能会破坏并行化(我尝试了一些变通方法,但尚未成功:)。正如我所听说的,Jython没有这个问题。其次,从Jython到Jave重构代码的关键部分似乎有希望提高效率。但是,我不确定Java执行矩阵计算的速度是否比Numpy快。GIL肯定是个问题,这是真的。这当然取决于您的具体问题,但我不相信Java/Jython已经证明自己是解决您所面临问题的好方法。在Windows上工作会让事情变得更加困难,但我认为最好的选择是数字。或者,考虑为临界段编写自己的多线程C代码(或见)。