Hướng dẫn how do you call a .mat file in python? - làm thế nào để bạn gọi một tệp .mat trong python?

Có một gói đẹp gọi là mat4py có thể dễ dàng cài đặt

pip install mat4py

Thật đơn giản khi sử dụng (từ trang web):

Tải dữ liệu từ một tệp mat

Hàm

from mat4py import loadmat

data = loadmat('datafile.mat')
0 tải tất cả các biến được lưu trữ trong tệp mat vào cấu trúc dữ liệu Python đơn giản, chỉ sử dụng các đối tượng Python tựa
from mat4py import loadmat

data = loadmat('datafile.mat')
1 và
from mat4py import loadmat

data = loadmat('datafile.mat')
2. Các mảng số và ô được chuyển đổi thành danh sách lồng nhau theo thứ tự hàng. Mảng được ép để loại bỏ các mảng chỉ có một yếu tố. Cấu trúc dữ liệu kết quả bao gồm các loại đơn giản tương thích với định dạng JSON.

Ví dụ: Tải tệp MAT vào cấu trúc dữ liệu Python:

from mat4py import loadmat

data = loadmat('datafile.mat')

Biến

from mat4py import loadmat

data = loadmat('datafile.mat')
3 là
from mat4py import loadmat

data = loadmat('datafile.mat')
1 với các biến và giá trị có trong tệp mat.

Lưu cấu trúc dữ liệu Python vào tệp mat

Dữ liệu Python có thể được lưu vào tệp MAT, với hàm

from mat4py import loadmat

data = loadmat('datafile.mat')
5. Dữ liệu phải được cấu trúc theo cách tương tự như đối với
from mat4py import loadmat

data = loadmat('datafile.mat')
0, tức là nó phải bao gồm các loại dữ liệu đơn giản, như
from mat4py import loadmat

data = loadmat('datafile.mat')
1,
from mat4py import loadmat

data = loadmat('datafile.mat')
2,
from mat4py import loadmat

data = loadmat('datafile.mat')
9,
from mat4py import savemat

savemat('datafile.mat', data)
0 và
from mat4py import savemat

savemat('datafile.mat', data)
1.

Ví dụ: Lưu cấu trúc dữ liệu Python vào tệp mat:

from mat4py import savemat

savemat('datafile.mat', data)

Tham số

from mat4py import loadmat

data = loadmat('datafile.mat')
3 sẽ là
from mat4py import loadmat

data = loadmat('datafile.mat')
1 với các biến.

Một số lượng lớn các bộ dữ liệu cho khoa học và nghiên cứu dữ liệu, sử dụng các tệp .mat. Trong bài viết này, chúng tôi sẽ học cách làm việc với các tệp .mat trong Python và khám phá chúng một cách chi tiết. .mat files. In this article, we’ll learn to work with .mat files in Python and explore them in detail.

Tại sao chúng ta sử dụng các tệp .mat trong Python?

Mục đích của một tệp .mat có vẻ không rõ ràng ngay lập tức. Nhưng khi làm việc với các bộ dữ liệu lớn, thông tin có trong các tệp này là hoàn toàn quan trọng đối với các dự án khoa học/máy học dữ liệu!.mat file may not seem obvious right off the bat. But when working with large datasets, the information contained within these files is absolutely crucial for data science/machine learning projects!

Điều này là do các tệp .mat chứa siêu dữ liệu của mọi đối tượng/bản ghi trong tập dữ liệu..mat files contain the metadata of every object/record in the dataset.

Mặc dù các tệp không được thiết kế chính xác cho mục đích duy nhất là tạo các chú thích, rất nhiều nhà nghiên cứu sử dụng MATLAB cho nghiên cứu và thu thập dữ liệu của họ, gây ra nhiều chú thích mà chúng tôi sử dụng trong việc học máy để có mặt dưới dạng tệp .mat ..mat files.

Vì vậy, nó rất quan trọng đối với một nhà khoa học dữ liệu để hiểu cách sử dụng các tệp .mat cho các dự án của bạn. Những điều này cũng giúp bạn làm việc tốt hơn với các bộ dữ liệu đào tạo và kiểm tra thay vì làm việc với các tệp CSV thông thường.

Bắt đầu nào!

Theo mặc định, Python không có khả năng đọc các tệp .mat. Chúng ta cần nhập một thư viện biết cách xử lý định dạng tệp.

1. Cài đặt Scipy

Tương tự như cách chúng tôi sử dụng mô -đun CSV để hoạt động với các tệp .csv, chúng tôi sẽ nhập scipy libary để làm việc với các tệp .mat trong Python.

Nếu bạn không có Scipy, bạn có thể sử dụng lệnh PIP để cài đặt cùng một

Bây giờ chúng tôi đã thiết lập SCIPY và sẵn sàng để sử dụng, bước tiếp theo là mở tập lệnh Python của bạn để cuối cùng nhận được dữ liệu cần thiết từ tệp.

2. Nhập mô -đun scipy.io.loadmat

Trong ví dụ này, tôi sẽ sử dụng các chú thích accordion do Caltech cung cấp, trong 101 loại đối tượng.

from scipy.io import loadmat
annots = loadmat('annotation_0001.mat')
print(annots)

Sau khi thực hiện, in ra các antot sẽ cung cấp cho chúng tôi điều này dưới dạng đầu ra.

{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Tue Dec 14 15:57:03 2004', '__version__': '1.0', '__globals__': [], 'box_coord': array([[  2, 300,   1, 260]], dtype=uint16), 'obj_contour': array([[ 37.16574586,  61.94475138,  89.47697974, 126.92081031,
        169.32044199, 226.03683241, 259.07550645, 258.52486188,
        203.46040516, 177.5801105 , 147.84530387, 117.0092081 ,
          1.37384899,   1.37384899,   7.98158379,   0.82320442,
         16.2412523 ,  31.65930018,  38.81767956,  38.81767956],
       [ 58.59300184,  44.27624309,  23.90239411,   0.77532228,
          2.97790055,  61.34622468, 126.87292818, 214.97605893,
        267.83793738, 270.59116022, 298.67403315, 298.67403315,
        187.99447514,  94.93554328,  90.53038674,  77.31491713,
         62.44751381,  62.99815838,  56.94106814,  56.94106814]])}

Bắt đầu, bạn có thể thấy rằng tệp .mat duy nhất này cung cấp thông tin liên quan đến phiên bản MATLAB được sử dụng, nền tảng, ngày tạo của nó và nhiều hơn nữa..mat file provides information regarding the version of MATLAB used, the platform, the date of its creation, and a lot more.

Phần mà chúng ta nên tập trung vào, tuy nhiên,

from mat4py import savemat

savemat('datafile.mat', data)
4 và
from mat4py import savemat

savemat('datafile.mat', data)
5.

3. Phân tích cấu trúc tệp .mat

Nếu bạn đã trải qua thông tin liên quan đến các chú thích do Caltech cung cấp, bạn sẽ biết rằng những con số này là những phác thảo của hình ảnh tương ứng trong tập dữ liệu.

Trong một chi tiết hơn một chút, điều này có nghĩa là đối tượng có trong hình 0001, bao gồm các phác thảo này. Xa hơn một chút trong bài viết, chúng tôi sẽ sắp xếp các con số, vì vậy, đừng lo lắng về điều đó.

Phân tích phân tích thông qua cấu trúc tệp này, chúng tôi có thể gán tất cả các giá trị đường viền cho danh sách Python mới.

con_list = [[element for element in upperElement] for upperElement in annots['obj_contour']]

Nếu chúng tôi in ra

from mat4py import savemat

savemat('datafile.mat', data)
6, chúng tôi sẽ nhận được một mảng 2D đơn giản.

[[37.16574585635357, 61.94475138121544, 89.47697974217309, 126.92081031307546, 169.32044198895025, 226.03683241252295, 259.0755064456721, 258.52486187845295, 203.4604051565377, 177.58011049723754, 147.84530386740326, 117.0092081031307, 1.3738489871086301, 1.3738489871086301, 7.98158379373848, 0.8232044198894926, 16.24125230202577, 31.65930018416205, 38.81767955801104, 38.81767955801104], [58.59300184162066, 44.27624309392269, 23.90239410681403, 0.7753222836096256, 2.9779005524862328, 61.34622467771641, 126.87292817679563, 214.97605893186008, 267.83793738489874, 270.59116022099454, 298.6740331491713, 298.6740331491713, 187.9944751381216, 94.93554327808477, 90.53038674033152, 77.31491712707185, 62.44751381215474, 62.998158379373876, 56.94106813996319, 56.94106813996319]]

4. Sử dụng khung dữ liệu gấu trúc để làm việc với dữ liệu

Bây giờ bạn có thông tin và dữ liệu được truy xuất, bạn sẽ làm việc với nó như thế nào? Tiếp tục sử dụng danh sách? Chắc chắn không phải.

Chúng tôi sử dụng DataFrames làm cấu trúc để làm việc, trong đó nó hoạt động giống như một bảng dữ liệu. Gọn gàng để nhìn vào, và cực kỳ đơn giản để sử dụng.

Bây giờ, để làm việc với DataFrames, chúng tôi sẽ cần nhập một mô -đun khác, gấu trúc.Pandas.

Pandas là một công cụ phân tích dữ liệu nguồn mở, được sử dụng bởi những người đam mê học tập máy và các nhà khoa học dữ liệu trên toàn thế giới. Các hoạt động được cung cấp bởi nó được coi là quan trọng và cơ bản trong rất nhiều ứng dụng khoa học dữ liệu.

Chúng tôi chỉ làm việc với DataFrames trong bài viết này, nhưng, hãy nhớ rằng các cơ hội được cung cấp bởi gấu trúc là rất lớn.

Làm việc với dữ liệu mà chúng tôi đã nhận được ở trên có thể được đơn giản hóa bằng cách sử dụng gấu trúc để xây dựng khung dữ liệu với các hàng và cột cho dữ liệu.

# zip provides us with both the x and y in a tuple.
newData = list(zip(con_list[0], con_list[1]))
columns = ['obj_contour_x', 'obj_contour_y']
df = pd.DataFrame(newData, columns=columns)

Bây giờ, chúng tôi có dữ liệu của chúng tôi trong một khung dữ liệu gọn gàng!

    obj_contour_x  obj_contour_y
0       37.165746      58.593002
1       61.944751      44.276243
2       89.476980      23.902394
3      126.920810       0.775322
4      169.320442       2.977901
5      226.036832      61.346225
6      259.075506     126.872928
7      258.524862     214.976059
8      203.460405     267.837937
9      177.580110     270.591160
10     147.845304     298.674033
11     117.009208     298.674033
12       1.373849     187.994475
13       1.373849      94.935543
14       7.981584      90.530387
15       0.823204      77.314917
16      16.241252      62.447514
17      31.659300      62.998158
18      38.817680      56.941068
19      38.817680      56.941068

Như bạn có thể thấy, chúng tôi có tọa độ X và Y cho phác thảo hình ảnh trong một khung dữ liệu đơn giản của hai cột.

Điều này sẽ cung cấp cho bạn một số rõ ràng về bản chất của dữ liệu trong tệp.

Quá trình tạo DataFrames cho mỗi tệp .mat là khác nhau, nhưng với kinh nghiệm và thực hành, việc tạo chúng từ các tệp .mat sẽ tự nhiên đến với bạn..mat file is different but, with experience and practice, creating them out of .mat files should come naturally to you.

Đó là tất cả cho bài viết này!

Sự kết luận

Bây giờ bạn đã biết cách làm việc với các tệp .mat trong Python và cách tạo các khung dữ liệu trong gấu trúc với nội dung của nó..mat files in Python, and how to create dataframes in pandas with its content.

Các bước tiếp theo để làm việc với dữ liệu này sẽ là và tạo các mô hình của riêng bạn hoặc sử dụng các mô hình hiện có để đào tạo hoặc kiểm tra bản sao của bạn.

Người giới thiệu

  1. Tài liệu chính thức của Scipy.io
  2. Tài liệu chính thức của Gandas DataFrame

Bạn có thể mở tệp .mat trong Python không?

Theo mặc định, Python không có khả năng đọc các tệp .mat.Python is not capable of reading . mat files.

Tôi có thể mở tệp mat mà không cần matlab không?

.Các tệp MAT chứa dữ liệu nhị phân, do đó bạn sẽ không thể mở chúng dễ dàng bằng trình xử lý văn bản.Có một số tùy chọn để mở chúng bên ngoài Matlab: Nếu tất cả những gì bạn cần làm là xem các tệp, bạn có thể có được Octave, đây là một triển khai MATLAB miễn phí, nhưng hơi chậm.you could obtain Octave, which is a free, but somewhat slower implementation of MATLAB.

Là .mat và .m giống nhau?

Tập tin với a.M tiện ích mở rộng chứa mã MATLAB, dưới dạng tập lệnh hoặc hàm.Tập tin với a.Tiện ích mở rộng MAT chứa dữ liệu được định dạng MATLAB và dữ liệu có thể được tải từ hoặc ghi vào các tệp này bằng tải chức năng và lưu tương ứng.