#pic_center =400x
系列文章:
文章目录
1、导入依赖
org.python
jython-standalone
2.7.2
2、在java中直接执行python代码片段
通过上面这种方式执行python代码片段,实际上是通过Jpython来实现的,这种方式能执行的python代码片段比较有限,都是一些最原始的python命令,很多包不能用,例如执行pythonInterpreter.exec(“import pandas as pd”); 都会报错。所以这种方式一般不推荐
package com.song.mywj.py;
import org.python.util.PythonInterpreter;
import java.io.IOException;
public class TestPy {
public static void main(String[] args) throws IOException, InterruptedException {
Mytest();
}
public static void Mytest () throws IOException, InterruptedException {
Process proc = Runtime.getRuntime().exec("python E:\code\deeplea\pytorchlearn\learn\plt\test.py");
proc.waitFor();
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("a=[5,2,3,9,4,0]; ");
interpreter.exec("print(sorted(a));"); //此处python语句是3.x版本的语法
interpreter.exec("print sorted(a);"); //此处是python语句是2.x版本的语法
}
Java调用Python程序方法总结
3、通过Runtime.getRuntime().exec()方法来执行python脚本
package com.song.mywj.py;
import java.io.IOException;
public class TestPy {
public static void main(String[] args) throws IOException, InterruptedException {
Mytest();
}
public static void Mytest () throws IOException, InterruptedException {
Process proc ;
String compiler = "D:\devementtool\Anaconda3-202105\python.exe";
String rootPath = "E:\code\deeplea\pytorchlearn\learn\plt\";
String program = "test.py";
String commond = compiler+" "+rootPath+program;
proc = Runtime.getRuntime().exec(commond);
proc.waitFor();
}
}
原python脚本
# 导入功能包,产生数据 import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm nsample = 20 # 20个样本点 x = np.linspace(0,10,nsample) # 从0到20之间选择20个数(等距) print(x) # 加一列1,为了与常数项进行组合 X = sm.add_constant(x) print(X) # 产生β0与β1(真实情况) beta = np.array([2,5]) print(beta) # 误差项(设置抖动,为了让数据更真实) e = np.random.normal(size=nsample) print(e) # 实际值y y = np.dot(X,beta) + e print(y) # 最小二乘法 model = sm.OLS(y,X) # 拟合数据 res = model.fit() # 计算的回归系数β0和β1 print(res.params) # 产生全部结果 res.summary() # 拟合的估计值 y_ = res.fittedvalues print(y_) # 拟合的估计值 y_ = res.fittedvalues print(y_) fig, ax = plt.subplots(figsize=(8,6)) ax.plot(x,y,'o',label='data') # 原始数据 ax.plot(x,y_,'r--',label='test') # 拟合数据 ax.legend(loc='best') plt.show()
在java中调用python程序



