Android App开发新选择(二):透过Chaquopy结合Python第三方库numpy安装与应用

1.  前言

前一篇已经教大家如何在Android Studio上进行Chaquopy安装;由于Chaquopy支援Python多个第三方库,让开发者可以在Android Studio上轻松使用Python生态系统。Chaquopy支援大多数常用的Python第三方库,例如numPy、SciPy、Pandas、Matplotlib、Scikit-learn等。详细第三方库可参考Chaquopy package repository网站。

因此这次要教大家如何安装Python第三方库numpy与应用。

2.  Android Studio安装Python第三方库numpy

以下环境是在Windows 10下建置。

a.  在appàbuild.gradleàdefaultConfigàpython区块添加文件添加。(图1)

pip{
install "numpy"
}​

看官们如果要安装其他第三方库也可以利用此方式进行新增。

 
图1
b.  设定完后记得,点击Sync Now进行同步,完成之后,Python的第三方库numpy套件就成功加入项目内。(图2)

 

图2

3.  Android内使用 Python第三方库numpy套件范例

以下提供两个范例,1) 使用numpy计算两个矩阵的乘积。2) 使用numpy生成随机数组,并计算其平均值和标准差,除了透过python使用numpy计算外,还能将计算后的数值返回并转成java格式,供使用者能够在java进行后续应用,达到java与python交互应用。
a.  使用numpy计算两个矩阵的乘积。
i.   在hello_python.py档案内增加。(图3)

import numpy as np



#使用numpy计算两个矩阵的乘积
def matrix_multiply():
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.matmul(a, b)
return c

图3

ii.  我们在MainActivity档案内添加以下程式码,将python内numpy计算完后的数值读取到java程式中。(图4)
//初始化python环境
if(!Python.isStarted()){
Python.start(new AndroidPlatform(this));
}

//使用numpy计算两个矩阵的乘积
Python py = Python.getInstance();

//调用hello_python.py里面的matrix_multiply函式
PyObject pyObj = py.getModule("hello_python").get("matrix_multiply");



//将matrix_multiply计算完的数值,换成java中的float类型

float[][] result = pyObj.call().toJava(float[][].class);
String resultStr = "";
for (int i = 0; i < result.length; i++) {
for (int j = 0; j < result[i].length; j++) {
resultStr += result[i][j] + " ";
}
resultStr += "\n";

}
Log.d("Result", resultStr);​

图4

iii.  最后执行Run app即可成功使用,可以在Logcat中看到python返回至Java的输出。 (图5)

 

图5

b.  使用numpy生成随机数组,并计算其平均值和标准差。


i.  在hello_python.py档案内增加。(图6)

import numpy as np



#使用numpy生成随机数组,并计算其平均值和标准差。

def numpy_example():

# Generate a random array with shape (3, 3)

a = np.random.rand(3, 3)

# Calculate the mean of the array

mean = np.mean(a)

# Calculate the standard deviation of the array

std = np.std(a)

return mean, std​

图6

ii.  我们在MainActivity档案内添加以下程式码,将python内numpy计算完后的两个返回值,分别读取到java程式中。(图7)
//使用numpy生成随机数组,并计算其平均值和标准差。

Python np = Python.getInstance();

//调用hello_python.py里面的numpy_example函式

PyObject npObj = np.getModule("hello_python").get("numpy_example");

PyObject npResult = npObj.call();

//numpy_example的返回值有两个,将其分别转换成java中的float类型

float mean = npResult.asList().get(0).toFloat();

float std = npResult.asList().get(1).toFloat();

Log.d("Result"," mean = "+ mean);

Log.d("Result"," std = "+ std);​

图7

iii.  最后执行Run app既可成功使用,可以在Logcat中看到python返回至Java的输出。(图8)

 

图8

结语

透过以上的教学,相信各位已经能够成功透过Android Studio轻松地结合Chaquopy使用Python第三方库numpy,这将可为各位看官们提供更多的功能应用选择,使得开发过程更加灵活和高效,有问题的看官们欢迎联系我,我们一同讨论。

喜欢我的帖子,请帮我按个”收藏”,我们下回见。

Q&A

  1. Chaquopy 是否可以在 iOS 上运行?

Ans:Chaquopy 目前只支援 Android 平台,并不支持 iOS。 

  1. Chaquopy是否需要Internet连接才能工作?

Ans:在构建过程中,Chaquopy需要Internet连接才能下载Python解释器和第三方库。但是,在运行时,它不需要Internet连接。

  1. 在使用Chaquopy时,是否需要将Python代码转换为Java代码?

Ans:不需要。Chaquopy允许直接在Android应用中运行Python代码,并且可以方便地将Python数据类型转换为Java数据类型。

  1. Chaquopy的Python第三方库是否支援Qt5吗?

Ans: Chaquopy并不支援Qt5

  1. Chaquopy的Python第三方库是否支持OpenCV?

Ans:是的,有支援,此部分下一篇博文会介绍,近请期待。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论