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次,發文人進小黑屋喔~

評論