Использование Python для замены MATLAB: как импортировать данные? - PullRequest
11 голосов
/ 29 июня 2009

Я хочу использовать некоторые библиотеки Python для замены MATLAB. Как я могу импортировать данные Excel в Python (например, используя NumPy ), чтобы использовать их?

Я не знаю, является ли Python надежной альтернативой MATLAB, но я хочу попробовать это. Есть ли учебник?

Ответы [ 8 ]

12 голосов
/ 29 июня 2009

В зависимости от того, какие вычисления вы выполняете с MATLAB (и какие наборы инструментов вы используете), Python может быть хорошей альтернативой MATLAB.

Python + NumPy + SciPy + Matplotlib - правильная комбинация для запуска.

Для данных вы можете, например, сохранить свои данные непосредственно в текстовом файле (при условии, что вас не волнуют проблемы точности с плавающей запятой) и прочитать их в Python .

Если ваши данные Excel , где каждое значение разделено «;», вы можете, например, прочитать файл построчно и использовать метод split () (с «;» в качестве аргумента), чтобы получить каждое значение.

Для MATLAB до версии 7.1 можно напрямую загружать файлы .mat из Python с помощью модуля scipy.io.matlab.mio .

3 голосов
/ 08 сентября 2014

Pandas - это библиотека анализа данных Python, которая может легко импортировать / экспортировать из Excel. Вот как это сделать:

http://pandas.pydata.org/pandas-docs/stable/10min.html#excel

Ускоренный курс:

import pandas as pd
data = pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])
3 голосов
/ 23 июля 2009

Вероятно, есть сотни способов импортировать текстовые данные в Python.

Но так как вы хотите заменить MATLAB , вы будете использовать NumPy и, вероятно, SciPy .

Сохраняйте простоту: используйте стандартную текстовую загрузку NumPy:

import numpy
imported_array = numpy.loadtxt('file.txt',delimiter='\t')  # Assuming tab-delimiter
print imported_array.shape
3 голосов
/ 29 июня 2009

Если вы родом из мира MATLAB , Pylab облегчит ваш переход. Как только вы конвертируете свои данные в ASCII, pylab.load() сделает все остальное:

pylab.load(fname, comments='#', delimiter=None, converters=None, 
           skiprows=0, usecols=None, unpack=False, 
           dtype=<type 'numpy.float64'>)
3 голосов
/ 29 июня 2009

Есть Matplotlib для графиков и CSV-модуль для чтения Excel данных (при условии, что вы можете выполнить дамп до CSV ).

Вот учебник о замене MATLAB на Python.

2 голосов
/ 29 июня 2009

Я рассмотрел mlabwrap как шаг к тому, чтобы облегчить некоторым MATLAB разработчикам использование Python.

Но мне не удалось его собрать, и я не запускаю здесь производственные установки, поэтому я мертв в воде.

1 голос
/ 21 марта 2012

"Я не знаю, является ли Python надежной альтернативой MATLAB"

Для меня (экспериментальная физика) Python - это не только полная замена MATLAB (при включении SciPy и Matplotlib , как упомянуто выше), но полезен для многих вещей, кроме обработки и визуализации данных (таковы общие потребности программирования).

«Я собираюсь попробовать SAGE».

Стоит отметить, что есть несколько серверов, работающих под управлением Sage , которые предлагают среду ноутбука (отметьте Попробуйте Sage онлайн в http://www.sagemath.org/). Это довольно аккуратно, учитывая тот факт, что все, что вам нужно, это интернет-браузер и доступ (установка не требуется).

Что касается вопроса, который интерпретировал Кевин Бухс (в другом ответе), чтение проприетарного Excel в Python можно выполнить несколькими способами, некоторые зависят от платформы (ОС):

  1. Хороший ресурс (независимый от платформы) - http://www.python -excel.org /
  2. Пример использования xlrd , который я однажды счел полезным (это то, что я использовал, когда мне это было нужно): http://code.activestate.com/recipes/483742/ для примера на основе xlrd (не зависит от платформы)
  3. pyexcelerator - еще один вариант.

Надеюсь, это поможет. Если нет, я могу попытаться создать пример кода самостоятельно (хотя те, что у меня есть, старше шести лет ...). Лично я предпочитаю, как было предложено в других ответах, использовать формат CSV или ASCII.

1 голос
/ 26 октября 2010

Если вы сохранили данные в формате MATLAB , используйте:

from scipy.io import loadmat

datafile = "yourfile.mat"
data = loadmat(datafile, matlab_compatible=True)
var1 = data['nameOfYourVariable'].squeeze()
var2 = data['nameOfYourOtherVariable'].squeeze()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...