简体   繁体   中英

Turning numpy array into list of lists without zip

I want to turn my array which consists out of 2 lists into a ranked list. Currently my code produces:

[['txt1.txt' 'txt2.txt' 'txt3.txt' 'txt4.txt' 'txt5.txt' 'txt6.txt'
  'txt7.txt' 'txt8.txt']
 ['0.13794219565502694' '0.024652340886571225' '0.09806335128916213'
  '0.07663118536707426' '0.09118273488073968' '0.06278926571143634'
  '0.05114729750522118' '0.02961812647701087']]

I want to make it so that txt1.txt goes with the first value, txt2 goes with the second value etc.

So something like this

[['txt1.txt', '0.13794219565502694'], ['txt2.txt', '0.024652340886571225']... etc ]]

I do not want it to become tuples by using zip.

My current code:

def rankedmatrix():
    matrix = numpy.array([names,x])
    ranked_matrix = sorted(matrix.tolist(), key=lambda score: score[1], reverse=True)
    print(ranked_matrix)

Names being: names = ['txt1.txt', 'txt2.txt', 'txt3.txt', 'txt4.txt', 'txt5.txt', 'txt6.txt', 'txt7.txt', 'txt8.txt']

x being:

x = [0.1379422 0.01540234 0.09806335 0.07663119 0.09118273 0.06278927 0.0511473 0.02961813]

Any help is appreciated.

You can use map to convert the tuple to list .

list(map(list, zip(names, x)))
[['txt1.txt', 0.1379422],
 ['txt2.txt', 0.01540234],
 ['txt3.txt', 0.09806335],
 ['txt4.txt', 0.07663119],
 ['txt5.txt', 0.09118273],
 ['txt6.txt', 0.06278927],
 ['txt7.txt', 0.0511473],
 ['txt8.txt', 0.02961813]]

You can get the list of lists with zip as well:

x = [['txt1.txt', 'txt2.txt', 'txt3.txt', 'txt4.txt', 'txt5.txt', 'txt6.txt'
  'txt7.txt', 'txt8.txt'], ['0.13794219565502694', '0.024652340886571225', '0.09806335128916213',
  '0.07663118536707426', '0.09118273488073968', '0.06278926571143634',
  '0.05114729750522118', '0.02961812647701087']]
res = [[e1, e2] for e1, e2 in zip(x[0], x[1])]
print(res)

Output:

[['txt1.txt', '0.13794219565502694'], ['txt2.txt', '0.024652340886571225'], ['txt3.txt', '0.09806335128916213'], ['txt4.txt', '0.07663118536707426'], ['txt5.txt', '0.09118273488073968'], ['txt6.txttxt7.txt', '0.06278926571143634'], ['txt8.txt', '0.05114729750522118']]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM