我是python的新手,正尝试从java调用python的函数。
我的主要要求是:
.py
仅需要修改文件就可以从Java对其进行调用。我可能会得到任何带有某些功能的python文件。我应该能够调用任何这些功能,而无需修改.py
文件。int
,String
,floats
等等)或非原语类型(HashMap
,ArrayList
从Java)来Python函数和接收返回所返回的对象(其原始类型或非原始类型的可能)从蟒到Java。我也使用pandas DataFrame和numpy ndarray,因此也希望能够与Java发送和接收相应的对象。我在网上找到了几个选项。很少有:
.py
脚本文件进行任何更改:py1.py
def square2(list):
squares = []
for i in list:
squares.append(i*i)
return squares
JythonTest.groovy
import org.python.util.PythonInterpreter
import org.python.core.*;
class JythonTest
{
static main(def args)
{
PythonInterpreter pi = new PythonInterpreter()
pi.exec("from py1 import square2")
PyFunction pf = (PyFunction)pi.get("square2")
println pf.__call__(new PyList([1,2,3,4]))[2] //9
}
}
我非常有能力满足我的需求。但是它不是CPython。
使用 ScriptEngine:这与PythonInterpreter非常相似。但是它的Jython又来了。而且,与PythonInterpreter不同,我们不能使用Jython 2.5+,也不能直接访问PyObjects。因此,可以很好地关闭此选项。
使用 py4j:无法找到示例,与Jython PythonInterpreter一样最小
如果我正确理解上述所有方法,似乎Jython PythonInterpreter是最佳选择。我在抓住错误时是否犯了错误?还有其他更好的选择吗?
目前尚无此问题的答案。使用CPython依赖于Python字节码的执行,这反过来又要求将Python解释器嵌入执行环境中。由于没有Java运行时附带嵌入式Python解释器,因此看起来Jython确实是最好的答案。
有时您想要的答案不可用!
我在将这部分Java转换为Kotlin时遇到了问题: 方法的第二个参数(注意不是集合)接受。我尝试了几个解决方案,包括提供一个lambda: 但这导致: 错误:(32,38)Kotlin:意外标记 错误:(33,38)Kotlin:意外标记 错误:(31,56)Kotlin:类型不匹配:推断的类型是Kfunction1<@parametername mutablehttpresponse<>?,u
问题内容: 我有两个不同形状的numpy数组,但是长度(引导尺寸)相同。我想对它们中的每一个进行混洗,以使相应的元素继续对应-即相对于其前导索引一致地对它们进行混洗。 该代码有效,并说明了我的目标: 例如: 但是,这感觉笨拙,效率低下且速度慢,并且需要复制数组-我宁愿就地对它们进行混洗,因为它们会很大。 有没有更好的方法来解决这个问题?更快的执行速度和更低的内存使用是我的主要目标,但是优雅的代码也
给定一个字符串,返回子字符串长度2在该字符串中出现的次数计数,并作为该字符串的最后2个字符,因此“hixxxhi”产生1(我们不计算结束子字符串)。 我在其中一个网站上发现了这个问题(https://codingbat.com/prob/p145834). 网站上对上述问题的回答如下: 我对下面提到的代码行有疑问 现在,我知道这段代码正在提取字符串“str”的最后两个字母。我感到困惑的是变量名。正
目前,我得到了以下函数,该函数遍历Pandas DataFrame()列并创建一个计数: 我有许多参数要分配给/调用函数——目前,我正在做以下工作: 这样做效果很好,但我想知道是否有更实用/有效的方法可以达到同样的效果。 我正在考虑将变量名添加到列表中,例如、、、等,并形成某种循环——如果这样做可行的话。。。 因此,也许有点像: 或者,有没有使用熊猫的方法?
问题内容: 我很清楚如何用C ++扩展Python,但是如果我想用Java编写要与numpy一起使用的函数怎么办? 这是一个简单的场景:我想使用Java类来计算numpy数组的平均值。如何将numpy向量传递给Java类并收集结果? 谢谢你的帮助! 问题答案: 我花了一些时间回答自己的问题,并希望分享我的答案,因为我觉得关于 stackoverflow的 这个主题的信息不多。我还认为,由于Java
(我使用的是Mongo Java Driver 2.12.0和RoboMongo。) 我正在从java创建一个mongo DB,并用所有来自java的数据填充它。所有这些对我来说都很有效。我已经在我的数据库中制作了几个我想要的javascript函数。如果我通过Robomongo shell手动插入这些函数,使用: 并在java中通过db.eval()调用这些函数,这些函数运行得很好。现在我想做的