Как мне преобразовать текстовый файл в трехмерный массив в Python? - PullRequest
3 голосов
/ 03 августа 2020

У меня есть текстовый файл размером 82355. Я хочу определить его как плотность (82355) и преобразовать его в трехмерный массив с именем rho(5,91,181), где

  • 5 - это для количества дней
  • 91 для количества широт,
  • 181 для количества долгот.

Это пример текста файл с первыми 11 значениями. Есть 5 дней с широтой от -90 до 90 с шагом в два градуса. Для каждой широты будет 180 строк, соответствующих долготе от 0 до 360 с шагом в два градуса.

       Latitude  Longitude           rho
0         -90.0        0.0  3.396760e-12
1         -90.0        2.0  3.397140e-12
2         -90.0        4.0  3.397510e-12
3         -90.0        6.0  3.397870e-12
4         -90.0        8.0  3.398470e-12
5         -90.0       10.0  3.399060e-12
6         -90.0       12.0  3.399810e-12
7         -90.0       14.0  3.400560e-12
8         -90.0       16.0  3.401440e-12
9         -90.0       18.0  3.402310e-12
10        -90.0       20.0  3.403200e-12

Я не понимаю, как запустить и проанализировать этот текстовый файл с размером 82355 в 3D массив с именем rho (5,91,181) в Python. Есть у кого-нибудь рекомендации?

1 Ответ

1 голос
/ 03 августа 2020

Сам файл довольно легко проанализировать, поскольку он имеет стандартный формат tsv. Вам нужно только указать, как рассчитывается день, затем просто go по каждой строке и поместить значение rho в нужное место массива:

import numpy as np
import pandas as pd
df = pd.read_csv('path_to_data_file', sep=r'[ \t]+')
rho = np.zeros((5, 9, 181))
for i, e in df.iterrows():
    day = calc_day_from(i, e)
    lat = int((e['Latitude'] + 90) / 2)
    long = int(e['Longitude'] / 2)
    rho[day, lat, long] = e['rho']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...