Добавьте данные в пустой массив, чтобы создать многомерный массив.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Добавьте данные в пустой массив, чтобы создать многомерный массив.

Сообщение Anonymous »

У меня есть случай, когда мне нужно прочитать файлы и заполнить массив данными так, чтобы каждая строка содержала данные из каждого файла. Проблема в том, что я не буду знать количество считываемых точек данных. До сих пор мне приходилось читать только один файл, поэтому сделать это было довольно просто.

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

timestep = np.array([])
time = np.array([])
with open('time-series.dat') as f:
for line in f:
ele = line.rstrip("\n").split()
timestep = np.append(timestep,float(ele[0]))
time = np.append(time,float(ele[1]))

Здесь и временной шаг, и время представляют собой одномерные массивы с размером = количеству точек данных.
Теперь мне нужно прочитать более 1 файла и заполнить его в один и тот же массив. В конце концов мне нужен 2D-массив с формой (количество файлов, количество точек данных в каждом файле). Например,

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

cases = ['1','2']
timestep = np.array([])
time = np.array([])
for i in range(len(cases)):
with open('time-series'+cases[i]+'.dat') as f:
for line in f:
ele = line.rstrip("\n").split()
???
???

Если я использую добавление, он не создает 2D-массив. Он просто создает одномерный массив длиной (2*количество точек данных).
Я пробовал использовать vstack, но изначально не могу использовать его с пустым массивом .
Я пробовал использовать списки, потому что функцию list.append можно использовать для добавления новой строки, и это сработало.

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

cases = ['1','2']
timestep = np.array([])
time = np.array([])
for i in range(len(cases)):
if i>0:
timestep=timestep.tolist()
time = time.tolist()
arr1 = []
arr2 = []
with open('time-series'+cases[i]+'.dat') as f:
for line in f:
ele = line.rstrip("\n").split()
arr1.append(ele[0])
arr2.append(ele[1])

timestep.append(arr1)
time.append(arr2)

timestep = np.array(timestep)
time = np.array(time)
**#I am converting to numpy array here because I need arrays to perform further calculations with timestep and time before I move on to the next iteration of loop i.**
Но это слишком усложняет задачу: использование дополнительных списков arr1 и arr2 и преобразование туда и обратно из списка в массив. У меня здесь только две переменные, но если мне действительно нужно прочитать больше из файла, он добавит дополнительную переменную списка для каждого нужного мне массива.
Кто-нибудь знает, как я могу добиться чтения нескольких файлов и создания из них 2D-массивов? Я, конечно, могу зайти в файл и посмотреть, сколько там точек данных, чтобы создать массив известного размера. Но в этом случае каждый раз, когда я запускаю скрипт, мне придется менять размер, чего я хочу избежать.
Пожалуйста, будьте вежливы. Если что-то не понятно, могу объяснить подробнее. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... onal-array
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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