Как элегантно выделить массив numpy?Python

Программы на Python
Ответить
Anonymous
 Как элегантно выделить массив numpy?

Сообщение Anonymous »

В основном это касается массивов Numpy, но я считаю, что это общая проблема дизайна. Во многих случаях у меня возникает следующая общая проблема в научных вычислениях: мне нужно прочитать набор данных, состоящий из нескольких временных экземпляров определенного векторного поля, например. изменяющееся во времени поле скоростей в ряде точек. Что-то, что может быть трехмерным массивом размеров (Npoints, 3, Ntimesteps) (3, потому что у меня есть три компонента вектора). Обычно у меня был бы один файл на каждый такт, поэтому мне пришлось бы читать файлы Ntimesteps, но я заранее не знаю размер каждого поля (т. е. я не знаю заранее Npoints, но это одинаково для каждого файла). Если я хочу предварительно выделить массив Numpy для хранения этих данных, я привык делать что-то вроде этого:

Код: Выделить всё

tsteps = list(glob.glob('time*.csv'))
Nsteps = len(tsteps)
with open(tsteps[0], 'r') as f:
# do my work to get Npoints and the data of the first file
dataset = np.zeros(Npoints, 3, Nsteps)
dataset[:,:,0] = data_first_file
for i,f in enumerate(tsteps[1:]):
# do my work again
dataset[:,:,i] = data_from_tstep_i
Однако это выглядит не очень «элегантно», поскольку мне приходится дважды писать код для обработки каждого файла временных шагов: один раз для предварительного выделения массива и один раз в цикле. Есть ли более элегантный способ сделать это?


Подробнее здесь: https://stackoverflow.com/questions/792 ... umpy-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»