2

I have an array like the one below. How can I take the argmax from this array and save it as a dataframe.

array

([[  4.33578761e-03,   1.11002535e-01,   1.18002132e-01,
      2.23158062e-01,   3.57010156e-01,   9.33912754e-01],
   [  3.21856714e-05,   3.46616306e-03,   4.58798464e-03,
      7.65424687e-03,   1.02789648e-01,   9.99610841e-01]], dtype=float32) was passed
Reese Fitzmaurice
  • 307
  • 1
  • 2
  • 8

2 Answers2

2

Considering n as numpy array

import numpy as np
n = np.array([[  4.33578761e-03,   1.11002535e-01,   1.18002132e-01,
      2.23158062e-01,   3.57010156e-01,   9.33912754e-01],
   [  3.21856714e-05,   3.46616306e-03,   4.58798464e-03,
      7.65424687e-03,   1.02789648e-01,   9.99610841e-01]], dtype=float)

# printing argmax at axis = 0
print(np.argmax(n, axis=0))
#print(n.argmax(axis=0))

a_max = np.argmax(n, axis=0)
np.save(open("your_file_path", "w"), a_max)

and to load

a_max = np.load(open("your_file_path"))

References

Wazy
  • 8,822
  • 10
  • 53
  • 98
1

I believe you need:

print (arr.argmax(axis=1))
[5 5]

print (arr.argmax(axis=0))
[0 0 0 0 0 1]

First get argmax and then use DataFrame constructor:

print (pd.DataFrame(arr.argmax(axis=0), columns=['a']))
   a
0  0
1  0
2  0
3  0
4  0
5  1

print (pd.DataFrame(arr.argmax(axis=0)[None, :]))
   0  1  2  3  4  5
0  0  0  0  0  0  1

print (pd.DataFrame(arr.argmax(axis=1), columns=['a']))
   a
0  5
1  5

Or create DataFrame and call idxmax

print (pd.DataFrame(arr).idxmax().to_frame('a'))
#same as
#print (pd.DataFrame(arr).idxmax(axis=0).to_frame('a'))
   a
0  0
1  0
2  0
3  0
4  0
5  1

print (pd.DataFrame(arr).idxmax().to_frame(0).T)
   0  1  2  3  4  5
0  0  0  0  0  0  1


print (pd.DataFrame(arr).idxmax(axis=1).to_frame('a'))
   a
0  5
1  5
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252