Рефакторинг фрейма данных numpy и pandas в словарь

#python #pandas #numpy #dictionary

#python #pandas #numpy #словарь

Вопрос:

Я пытаюсь реорганизовать некоторый код, чтобы в нем не было так много повторений. То, что я пытаюсь сделать, это создать входные данные для многоканальной / входной нейронной сети. Рассматриваемые функции полностью получены из двух разных источников, и здесь inputA представляет собой 2D-массив и должен храниться в этом формате.

У меня есть следующий код:

 'Create Input Values'
inputA= word_embeddings.numpy()
inputB = df['Features'].values
y = df['Target'].values

full_model_inputs = [inputA, inputB]

#Create Dictionary
original_model_inputs = dict(inputA= inputA, inputB= inputB)

'Create Train and Validation Data from Inputs'
#Preserve data dimensionality for data split
df = pd.DataFrame({"inputA":original_model_inputs["inputA"],  
                   "inputB":list(original_model_inputs["inputB"])})

#Data Split
x_train, x_valid, y_train, y_valid = train_test_split(df, y, test_size = 0.25)

#Convert back to original format
x_train = x_train.to_dict("list")
x_valid = x_valid.to_dict("list")

#Format dictionary items as arrays to be functional for model
x_train = {k:np.array(v) for k,v in x_train.items()}
x_valid = {k:np.array(v) for k,v in x_valid.items()}
  

Есть ли какие-либо предложения по улучшению этого кода? Просто хочу получить информацию от сообщества.

как выглядит словарь:

 {'inputA': array([40., 68., 46., ..., 60., 42., 50.]),
 'inputB': array([[-1.915694  , -2.39863253, -1.75456583, ...,  2.11158562,
          2.42145038,  1.0996474 ],
        [-1.99583805, -2.38059568, -1.94454968, ...,  2.14585209,
          2.56227231,  1.2808286 ],
        [-2.1607585 , -2.29914975, -1.85722673, ...,  2.04741383,
          2.34712863,  1.77104282],
        ...,
        [-2.1576829 , -2.28505015, -1.71492636, ...,  2.05909061,
          2.43704724,  1.90647388],
        [-1.81904769, -2.74457788, -2.15936947, ...,  2.31333733,
          2.50243115,  1.75907826],
        [-2.01300311, -2.32310271, -2.00470185, ...,  2.09641671,
          2.53372359,  1.22000134]])}
  

Комментарии:

1. Это может лучше подходить для CodeReview. Хотя SO любит решать «numpy векторизацию» и связанные с ней проблемы оптимизации, рефакторинг и общая организация ccde не подходят SO. Но сначала потратьте некоторое время на изучение требований к CR и типичных ответов. Они более требовательны к завершенности и работоспособности кода.

2. Спасибо! Не знал об этом 🙂 Я ценю это!