Импорт данных, разделенных строками, в массив numpy - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь импортировать данные в python numpy.array из файла данных следующим образом:

VARIABLES = Y Z V W
ZONE
T="1"
0 1 2 3
4 5 6 7
8 9 10 11
ZONE
T="2"
12 13 14 15
16 17 18 19
20 21 22 23
24 25 26 27

Мой ожидаемый результат:

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]
  [24 25 26 27]]]

Я пробовал что-то вроде

data = np.loadtxt(filename, delimiter=' ', comments=['V','T','Z'])

но в результате я получил массив данных, не разделенных на отдельные зоны. Спасибо за помощь!

Обновление:

Оказалось, что важно, чтобы зоны были разных размеров. В противном случае нет проблем.

1 Ответ

0 голосов
/ 10 марта 2019

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

import io
import numpy as np

f = io.StringIO('''VARIABLES = Y Z V W
ZONE
T="1"
0 1 2 3
4 5 6 7
8 9 10 11
ZONE
T="2"
12 13 14 15
16 17 18 19
20 21 22 23
24 25 26 27''')

data = []
for line in f:
    line = line.strip()
    line = line.split()
    if all(thing.isdigit() for thing in line):
        data.append([float(thing) for thing in line])
print(data)

a = np.array(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...