Эффективный способ сгладить 1D строку numpy массив до 1D float numpy array - PullRequest
0 голосов
/ 09 мая 2020

Я хотел бы спросить, как лучше использовать numpy для преобразования / сглаживания массива над 1D строкой numpy в 1D или 2D массив с плавающей запятой. Дело в том, что я должен хранить список значений с плавающей запятой в столбцах pandas фрейма данных, чтобы избежать неудобного массива. Однако эти значения болезненно читать, потому что список с плавающей запятой обрабатывается pandas как целая строка. Вот формат, который я обычно получал при вызове df.branchName:

array(['[110.762924, 176.10782, 97.453545, 47.24211, 9.123961, 49.076572, 9.892334, 155.76273]',
       '[54.983498, 42.953392, 26.73925, 20.285473, 5.817261, 10.84536, 7.2550445, 9.386389]',
       '[65.68088, 131.3692, 142.83168, 75.19385, 59.589417, -5.885845]',
       '[99.765884, 123.900116, 151.18433, 137.31078, 13.298813, 18.483736, 8.851394, 24.93825]',
       '[66.62968, 71.72392, 71.836624, 59.481956, 61.341305]',
       '[66.629616, 71.72373, 71.8364, 59.48184, 61.34116]',
       '[2.667129, 28.940117, 58.59804, 89.9932, 8.460876, 2.7282248, 36.31937, 63.39166]'])

Я ожидаю получить

array([110.762924, 176.10782, 97.453545, 47.24211, 9.123961, 49.076572, 9.892334, 155.76273, 54.983498, 42.953392, 26.73925, 20.285473, 5.817261, 10.84536, 7.2550445, 9.386389, ....])

Заранее большое спасибо.

1 Ответ

1 голос
/ 09 мая 2020

Я согласен с @hpaulj, что должен быть более стандартный способ того, чего вы пытаетесь достичь. (Возможно, разместите новый вопрос с объяснением проблемы). Но в случае, если вы настаиваете на использовании этого способа, вот решение:

np.hstack(np.array([[float(st) for st in item.strip('[]\s').split(',')] for item in list(a)]))

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

вывод:

[110.762924  176.10782    97.453545   47.24211     9.123961   49.076572
   9.892334  155.76273    54.983498   42.953392   26.73925    20.285473
   5.817261   10.84536     7.2550445   9.386389   65.68088   131.3692
 142.83168    75.19385    59.589417   -5.885845   99.765884  123.900116
 151.18433   137.31078    13.298813   18.483736    8.851394   24.93825
  66.62968    71.72392    71.836624   59.481956   61.341305   66.629616
  71.72373    71.8364     59.48184    61.34116     2.667129   28.940117
  58.59804    89.9932      8.460876    2.7282248  36.31937    63.39166  ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...