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"
}​

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

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

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

Android App开发教程(二)——透过Chaquopy结合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
Android App开发教程(二)——透过Chaquopy结合Python第三方库numpy安装与应用_第3张图片

图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);​
Android App开发教程(二)——透过Chaquopy结合Python第三方库numpy安装与应用_第4张图片

图4

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

Android App开发教程(二)——透过Chaquopy结合Python第三方库numpy安装与应用_第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​
Android App开发教程(二)——透过Chaquopy结合Python第三方库numpy安装与应用_第6张图片

图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);​
Android App开发教程(二)——透过Chaquopy结合Python第三方库numpy安装与应用_第7张图片

图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:是的,有支援,此部分下一篇博客会介绍,近请期待。

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

你可能感兴趣的:(QUALCOMM产线,python,numpy,开发语言,android,学习)