当前位置:   article > 正文

Android App开发教程(二)——透过Chaquopy结合Python第三方库numpy安装与应用

chaquopy

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)

  1. pip{
  2. install "numpy"
  3. }​

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

图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)

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

图3

ii.  我们在MainActivity档案内添加以下程式码,将python内numpy计算完后的数值读取到java程式中。(图4)

  1. //初始化python环境
  2. if(!Python.isStarted()){
  3. Python.start(new AndroidPlatform(this));
  4. }
  5. //使用numpy计算两个矩阵的乘积
  6. Python py = Python.getInstance();
  7. //调用hello_python.py里面的matrix_multiply函式
  8. PyObject pyObj = py.getModule("hello_python").get("matrix_multiply");
  9. //将matrix_multiply计算完的数值,换成java中的float类型
  10. float[][] result = pyObj.call().toJava(float[][].class);
  11. String resultStr = "";
  12. for (int i = 0; i < result.length; i++) {
  13. for (int j = 0; j < result[i].length; j++) {
  14. resultStr += result[i][j] + " ";
  15. }
  16. resultStr += "\n";
  17. }
  18. Log.d("Result", resultStr);​

图4

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

图5

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

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

  1. import numpy as np
  2. #使用numpy生成随机数组,并计算其平均值和标准差。
  3. def numpy_example():
  4. # Generate a random array with shape (3, 3)
  5. a = np.random.rand(3, 3)
  6. # Calculate the mean of the array
  7. mean = np.mean(a)
  8. # Calculate the standard deviation of the array
  9. std = np.std(a)
  10. return mean, std​

图6

ii.  我们在MainActivity档案内添加以下程式码,将python内numpy计算完后的两个返回值,分别读取到java程式中。(图7)

  1. //使用numpy生成随机数组,并计算其平均值和标准差。
  2. Python np = Python.getInstance();
  3. //调用hello_python.py里面的numpy_example函式
  4. PyObject npObj = np.getModule("hello_python").get("numpy_example");
  5. PyObject npResult = npObj.call();
  6. //numpy_example的返回值有两个,将其分别转换成java中的float类型
  7. float mean = npResult.asList().get(0).toFloat();
  8. float std = npResult.asList().get(1).toFloat();
  9. Log.d("Result"," mean = "+ mean);
  10. 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。 

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

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

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

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

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

Ans: Chaquopy并不支援Qt5

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

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

以上内容来源大大通官网,速戳了解更多精彩内容吧~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/418718
推荐阅读
相关标签
  

闽ICP备14008679号