MATLAB 数组作为 Python 变量
目錄
在 Python 中創建 MATLAB 數組
Python?中的?MATLAB?數組屬性和方法
Python?中的多維?MATLAB?數組
在?Python?中對?MATLAB?數組進行索引
在?Python?中對?MATLAB?數組進行切片
在?Python?中重構?MATLAB?數組
????????matlab Python? 包提供數組類以將 MATLAB? 數值類型的數組表示為 Python 變量,以便 MATLAB 數組可以在 Python 和 MATLAB 之間傳遞。
在 Python 中創建 MATLAB 數組
????????可以通過從 matlab Python 包中調用構造函數(例如 matlab.double、matlab.int32)在 Python 會話中創建 MATLAB 數值數組。構造函數的名稱表示 MATLAB 數值類型。
????????可以在 Python 中使用自定義類型初始化 MATLAB 雙精度數組。要使用該自定義類型進行初始化,它必須繼承自 Python 抽象基類 collections.Sequence。
????????可以將 MATLAB 數組作為輸入參數傳遞給由用于 Python 的 MATLAB 引擎 API 調用的函數。當 MATLAB 函數將數值數組作為輸出參數返回時,引擎會將該數組返回到 Python。
????????可以使用包含數字的可選 initializer 輸入參數初始化數組。initializer 必須是 Python 序列類型,例如 list、tuple 或其他序列類型。可選的 size 輸入參數根據序列來設置數組大小。
????????可以通過指定 initializer 包含多個數字序列或通過指定 size 為多維來創建多維數組。通過將可選的 is_complex 輸入參數設置為 True,可以創建復數 MATLAB 數組。matlab 包提供了下表中列出的 MATLAB 數組構造函數。
| matlab.double | matlab.double(initializer=None, size=None, is_complex=False) |
| matlab.single | matlab.single(initializer=None, size=None, is_complex=False) |
| matlab.int8 | matlab.int8(initializer=None, size=None, is_complex=False) |
| matlab.int16 | matlab.int16(initializer=None, size=None, is_complex=False) |
| matlab.int32 | matlab.int32(initializer=None, size=None, is_complex=False) |
| matlab.int64[a] | matlab.int64(initializer=None, size=None, is_complex=False) |
| matlab.uint8 | matlab.uint8(initializer=None, size=None, is_complex=False) |
| matlab.uint16 | matlab.uint16(initializer=None, size=None, is_complex=False) |
| matlab.uint32 | matlab.uint32(initializer=None, size=None, is_complex=False) |
| matlab.uint64[b] | matlab.uint64(initializer=None, size=None, is_complex=False) |
| matlab.logical | matlab.logical(initializer=None, size=None)[c] |
| matlab.object | 沒有構造函數。當函數返回的是 MATLAB 對象的句柄或值對象時,引擎會將 matlab.object 返回給 Python。 |
| [a]?In Python 2.7 on Windows,?matlab.int64?is converted to?int32?in MATLAB. Also, MATLAB cannot return an?int64?array to Python. [b]?In Python 2.7 on Windows,?matlab.uint64?is converted to?uint32?in MATLAB. Also, MATLAB cannot return a?uint64?array to Python. [c]?Logicals cannot be made into an array of complex numbers. | |
????????當創建具有 N 個元素的數組時,數組大小為 1×N,因為它是 MATLAB 數組。
import matlab.engine A = matlab.int8([1,2,3,4,5]) print(A.size)(1, 5)????????使用包含五個數字的 Python list 進行初始化。MATLAB 數組大小為 1×5,由 tuple (1,5) 指示。
Python?中的?MATLAB?數組屬性和方法
????????所有使用 matlab 包構造函數創建的 MATLAB 數組都具有下表中列出的屬性和方法。
| size | 數組大小返回為 tuple |
| reshape(size) | 按照序列 size 的指定重構數組 |
Python?中的多維?MATLAB?數組
????????在 Python 中,可以創建任何數值類型的多維 MATLAB 數組。使用兩個 Python list 變量創建一個 2×5 MATLAB 雙精度數組。
import matlab.engine A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]]) print(A)[[1.0,2.0,3.0,4.0,5.0],[6.0,7.0,8.0,9.0,10.0]]????????A 的 size 屬性顯示它是 2×5 數組。
print(A.size)(2, 5)在?Python?中對?MATLAB?數組進行索引
????????就像可以對 Python list 和 tuple 變量進行索引一樣,也可以對 MATLAB 數組進行索引。
import matlab.engine A = matlab.int8([1,2,3,4,5]) print(A[0])[1,2,3,4,5]????????MATLAB 數組的大小為 (1,5);因此,A[0] 是 [1,2,3,4,5]。對該數組進行索引會得到 3。
print(A[0][2])3????????Python 索引是從 0 開始的。當在 Python 會話中訪問 MATLAB 數組的元素時,請使用從 0 開始的索引。
????????對多維 MATLAB 數組進行索引。
A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]]) print(A[1][2])8.0在?Python?中對?MATLAB?數組進行切片
????????可以像對 Python list 和 tuple 變量進行切片一樣,對 MATLAB 數組進行切片。
import matlab.engine A = matlab.int8([1,2,3,4,5]) print(A[0][1:4])[2,3,4]????????可以將數據分配到一個切片。以下代碼顯示從 Python list 到一個數組切片的分配。
A = matlab.double([[1,2,3,4],[5,6,7,8]]); A[0] = [10,20,30,40] print(A)[[10.0,20.0,30.0,40.0],[5.0,6.0,7.0,8.0]]????????可以分配來自另一個 MATLAB 數組或來自包含數字的任何 Python 可迭代對象的數據。
????????可以為分配指定切片,如下所示。
A = matlab.int8([1,2,3,4,5,6,7,8]); A[0][2:4] = [30,40] A[0][6:8] = [70,80] print(A)[[1,2,30,40,5,6,70,80]]注意:
????????對 MATLAB 數組進行切片與對 Python?list?進行切片在行為上有所不同。對 MATLAB 數組進行切片將返回視圖而不是淺拷貝。
????????假定 MATLAB 數組和 Python?list?具有相同的值,分配切片也會產生不同結果,如以下代碼所示。
A = matlab.int32([[1,2],[3,4],[5,6]]) L = [[1,2],[3,4],[5,6]] A[0] = A[0][::-1] L[0] = L[0][::-1] print(A)[[2,2],[3,4],[5,6]]print(L)[[2, 1], [3, 4], [5, 6]]在?Python?中重構?MATLAB?數組
????????可以使用 reshape 方法在 Python 中重構 MATLAB 數組。輸入參數 size 必須是保留元素數量的一個序列。使用 reshape 將 1×9 MATLAB 數組更改為 3×3。
import matlab.engine A = matlab.int8([1,2,3,4,5,6,7,8,9]) A.reshape((3,3)) print(A)[[1,4,7],[2,5,8],[3,6,9]]總結
以上是生活随笔為你收集整理的MATLAB 数组作为 Python 变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Turbo PMAC控制卡步进电机控制
- 下一篇: OTRS 简介