У меня есть список списков и список. Первоначально нужно найти из списка списков значение argmax с индексом и сопоставить список списков с максимальным значением индекса с другим списком.
Вход :
a = np.array([[9.8894545, 2.12012004, 2.1054542],
[3.19212970, 9.6048260, 3.63252661],
[9.97873928, 3.10315885, 2.12607185],
[5.13391890, 4.53636282, 9.8429458]])
#type(a) -> np.ndarray
b = ['abc','def','ghi']
#type(b) -> list
Ожидаемый результат в фрейме данных:
column_c
abc
def
abc
ghi
Я пробовал следующие шаги, но не смог сопоставить с другим списком
a = np.array([[9.88945457e-01, 2.12012004e-11, 2.10545428e-02],
[3.19212970e-03, 9.60482604e-01, 3.63252661e-02],
[9.97873928e-01, 4.10315885e-12, 2.12607185e-03],
[5.13391890e-07, 9.84294588e-01, 4.57048982e-02]])
sam =np.max(a, axis=1)
df_3 = pd.DataFrame(sam, columns = ['Column_A'])
Выход (df_3)
Column_A
0 0.99
1 0.96
2 0.97
3 0.98
если вы хотите индексировать список на основе максимального индекса, используйте:
a = np.array([[9.8894545, 2.12012004, 2.1054542],
[3.19212970, 9.6048260, 3.63252661],
[9.97873928, 3.10315885, 2.12607185],
[5.13391890, 4.53636282, 9.8429458]])
b = ['abc','def','ghi']
df = pd.Series(np.array(b)[a.argmax(axis=1)])
выход:
0 abc
1 def
2 abc
3 ghi
dtype: object
как фрейм данных:
df_3 = pd.DataFrame({'column_c': np.array(b)[a.argmax(axis=1)]})
выход:
column_c
0 abc
1 def
2 abc
3 ghi
IIUC, используйте:
a = np.array([[9.8894545, 2.12012004, 2.1054542],
[3.19212970, 9.6048260, 3.63252661],
[9.97873928, 3.10315885, 2.12607185],
[5.13391890, 4.53636282, 9.8429458]])
b = ['abc','def','ghi']
df = pd.DataFrame(a.max(axis=0), index=b)
выход:
0
abc 9.978739
def 9.604826
ghi 9.842946
@sampathnandan проверьте обновление
простите, я обновил, пожалуйста, проверьте
@sampathnandan, это просто деталь, вы можете назначить существующий DataFrame df['X'] = pd.Series(np.array(b)[a.argmax(axis=1)])
или создать DataFrame: pd.DataFrame({'X': np.array(b)[a.argmax(axis=1)]})
Большое спасибо @mozway за обновление, я подумал преобразовать серию в_frame() и назначить
@sampathnandan, тогда логика неясна, вам следует уточнить