从列表列表中获取带索引的最大值并将索引值映射到带索引的字符串列表

from list of lists get max value with index and map index value to list of string with index

我有列表列表和列表,最初需要从列表列表中找到带有索引的 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