Python: нужна помощь в преобразовании строки шестнадцатеричных значений в массив numpy - PullRequest
1 голос
/ 06 апреля 2020

Я очень начинающий Python, использующий Тонни и Python 3.7.7. У меня есть строки значений, которые я хочу преобразовать в целые числа и поместить в массив numpy. Типичная строка:

print(temp)
05:01:00016043:00002F4F:00002F53:00004231:000050AA:00003ACE:00005C44:00003D3B:000064BC

temp = temp.split(":")
print(temp)

['05', '01', '00016043', '00002F4F', '00002F53', '00004231', '000050AA', '00003ACE', '00005C44', '00003D3B', '000064BC']

Я хочу эффективно преобразовать этот список строк, описывающих шестнадцатеричные числа, в целые числа и поместить их в массив numpy (с акцентом на эффективное!).

a = np.array([11], dtype=int)

Есть предложения? Спасибо

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Как насчет хорошего и аккуратного понимания списка в одну строку? Для строки s:

np.array([int(hexa, base=16) for hexa in s.split(sep=":")])

Это может показаться сложным, но вывод s.split(sep=":") представляет собой список шестнадцатеричных строк. Передача каждого из них (каждого hexa) в int с base=16 преобразует их, как вы хотите.

1 голос
/ 06 апреля 2020

Применить функцию, которая преобразует x в int (x, 16) для каждого элемента в L

import pandas as pd
import numpy as np

L = ['05', '01', '00016043', '00002F4F', '00002F53', '00004231', '000050AA', '00003ACE', '00005C44', '00003D3B', '000064BC']
output = pd.Series(L).apply(lambda x:int(x, 16)).values
print(output)

на выходе

[    5     1 90179 12111 12115 16945 20650 15054 23620 15675 25788]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...