SciPy Matlab Arrays

آرایه‌های متلب

می‌دانیم که NumPy توابع شیء را برای ما فراهم کرده است که داده‌ها را در شکل قابل خواندن برای پایتون مهیا می‌کند. اما SciPy علاوه بر این قابلیت همکاری با متلب را نیز مهیا می‌کند.

مدول scipy.io از SciPy توابعی جهت کار با آرایه‌های متلب دارد.

ذخیره داده با فرمت متلب

تابع savemat() این امکان را فراهم می‌کند که داده‌ها را با فرمت متلب ذخیره کنیم.

پارامترهای مورد نیاز برای آن عبارتند از:

  • filename - اسم فایل جهت ذخیره داده.
  • mdict - یک دیکشنری شامل داده.
  • do_compression - یک مقدار بولین که مشخص می‌کند نتیجه فشرده سازی شود یا خیر. مقدار پیش‌فرض آن False است.

from scipy import io
import numpy as np

arr = np.arange(10)

io.savemat('arr.mat', {"vec": arr})

کد بالا یک فایل با اسم "arr.mat" روی کامپیوترتان ذخیره می‌کند.

وارد کردن داده با فرمت متلب

تابع loadmat() این امکان را فراهم می‌کند تا داده ذخیره شده با فرمت متلب را وارد کد خود کنید.

این تابع نیاز به یک پارامتر ورودی الزامی دارد:

  • filename - اسم فایلی که داده‌ها در آن ذخیره شده‌اند.

یک آرایه ساختار یافته را برمی‌گرداند که کلیدهای آن اسم متغیرها هستند و مقادیر مربوط به آن‌ها مقادیر متغیرها می‌باشند.


from scipy import io
import numpy as np

# Import:
mydata = io.loadmat('arr.mat')

print(mydata)

خروجی:

می‌توانید از اسم متغیر vec جهت نشان داده متلب به تنهایی استفاده کنید.


from scipy import io
import numpy as np

# Import:
mydata = io.loadmat('arr.mat')

print(mydata['vec'])

خروجی:

دقت داشته باشید که داده اصلی یک بعدی بود ولی بعد از استخراج یک بعد دیگر به آن اضافه شد. جهت حل این مشکل می‌توانید از آرگومان squeeze_me=True استفاده کنید.


from scipy import io
import numpy as np

mydata = io.loadmat('arr.mat', squeeze_me=True)

print(mydata['vec'])

خروجی: