Я пытаюсь сделать невероятно простую вещь: загружать части листа Excel в массив Numpy. Я нашел кладж, который работает, но это ошеломляюще unpythonic: сказать, что мой рабочий лист был загружен как «WS», код:Рабочий лист Excel для массива Numpy
A = np.zeros((37,3))
for i in range(2,39):
for j in range(1,4):
A[i-2,j-1]= ws.cell(row = i, column = j).value
загружает содержимое «WS» в массиве А.
Должен быть более элегантный способ сделать это. Например, csvread позволяет сделать это гораздо более естественно, и хотя я мог бы преобразовать файл .xlsx в csv, вся цель работы с openpyxl состояла в том, чтобы избежать этого преобразования. Итак, вот мы, Коллективная Мудрость Могучих Интертруб: что более питонический способ выполнить эту концептуально тривиальную операцию?
Заранее благодарю вас за ответы.
PS: Я управляю Python 2.7.5 на Mac через Spyder, и да, я прочитал учебник openpyxl, и это единственная причина, по которой я получил это.
Спасибо. Это, бесспорно, более элегантно. Не могли бы вы объяснить, какие понятия здесь задействованы? Я думаю, что я понимаю стиль цикла, который вы используете (я видел, как он применялся к целому или список элементов), но мне трудно понять, как перебирать элементы ws []. Например, если я набираю тип (ws ['C1']), я получаю openpyxl.cell.cell.Cell, и для меня совершенно не очевидно, как можно перебирать этот объект. Я пытаюсь научиться лучше программировать, а не просто задавать вопросы по StackOverflow ... Спасибо за ваше терпение. –
@ ElNiño есть несколько вещей, я отредактирую свой ответ и добавлю немного больше информации. – paddyg
Aaaah, «понимание списка». Так называется этот волшебный трюк? Я немного почитал об этом. Для того, чтобы привыкнуть к нему, потребуется переформатирование мозга, но оно выглядит очень мощным. Таким образом, в этом случае он знает, что цикл с использованием генератора, встроенного в ws? Мне пришлось искать «генератор» тоже. В любом случае, спасибо за советы, и рад, что я могу указать вам на один полезный пакет, который я не писал! –