Mảng Matlab SciPy
Làm việc với mảng Matlab
Chúng tôi biết rằng NumPy cung cấp cho chúng tôi các phương pháp để duy trì dữ liệu ở các định dạng có thể đọc được cho Python. Nhưng SciPy cũng cung cấp cho chúng ta khả năng tương tác với Matlab.
SciPy cung cấp cho chúng ta mô-đun scipy.io
, có chức năng làm việc với mảng Matlab.
Xuất dữ liệu ở định dạng Matlab
Hàm savemat()
cho phép chúng ta xuất dữ liệu ở định dạng Matlab.
Phương thức này lấy các tham số sau:
- filename - tên tệp để lưu dữ liệu.
- mdict - một từ điển chứa dữ liệu.
- do_compression - một giá trị boolean chỉ định có nén kết quả hay không. Mặc định là Sai.
Ví dụ
Xuất mảng sau dưới dạng tên biến "vec" sang tệp mat:
from scipy import io
import numpy as np
arr = np.arange(10)
io.savemat('arr.mat', {"vec": arr})
Lưu ý: Ví dụ trên lưu tên tệp "arr.mat" trên máy tính của bạn.
Để mở tệp, hãy xem ví dụ "Nhập dữ liệu từ định dạng Matlab" bên dưới:
Nhập dữ liệu từ định dạng Matlab
Hàm loadmat()
cho phép chúng ta nhập dữ liệu từ file Matlab.
Hàm này nhận một tham số bắt buộc:
tên tệp - tên tệp của dữ liệu đã lưu.
Nó sẽ trả về một mảng có cấu trúc có khóa là tên biến và giá trị tương ứng là giá trị biến.
Ví dụ
Nhập mảng từ tệp mat sau.:
from scipy import io
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# Export:
io.savemat('arr.mat', {"vec": arr})
# Import:
mydata = io.loadmat('arr.mat')
print(mydata)
Kết quả:
{ '__header__': Nền tảng tệp MAT b'MATLAB 5.0: nt, Được tạo vào: Thứ ba ngày 22 tháng 9 13:12:32 2020', '__version__': '1.0', '__globals__': [], 'vec': mảng([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]) }Hãy tự mình thử »
Sử dụng tên biến "vec" để chỉ hiển thị mảng từ dữ liệu matlab:
Lưu ý: Chúng ta có thể thấy mảng ban đầu là 1D, nhưng khi trích xuất nó đã tăng lên một chiều.
Để giải quyết vấn đề này, chúng ta có thể chuyển một đối số bổ sung squeeze_me=True
:
Ví dụ
# Import:
mydata = io.loadmat('arr.mat', squeeze_me=True)
print(mydata['vec'])
Kết quả:
[0 1 2 3 4 5 6 7 8 9]Hãy tự mình thử »