title: Python command np.sum(x, axis=0) and softmax function
body: <p>I have the following problem: I want to compute the softmax function in Python and get an unexpected result. The code is the following:</p>
  
  <pre><code>import numpy as np
  
  def softmax(x):
      """Compute softmax values for each sets of scores in x."""
      return np.exp(x) / np.sum(np.exp(x), axis=0)
  </code></pre>
  
  <p>It works perfectly but I don´t know why: It works on matrices as follows: If I insert a 2x2 matrix A, the output is yet another 2x2 matrix. Why is that? Shouldn´t it return a differently sized array since every element of the matrix, i.e. $x=A[0,0]$, yields 2 output values (namely $exp(x)/(exp(A[0,0])+exp(A[1,0]))$ and $exp(x)/(exp(A[0,1])+exp(A[1,1]))$, because or the axis=0 command? That would lead to an 8-element output array, but the actual result only has 4 elements. Also, how exactly does the axis=0 command work? If I type A=np.array([2, 4]), then the logical result of np.sum(A, axis=0) should be array([2, 4]), since the columns are summed up. But the result is array([6]). And the command np.sum(A, axis=1) strangely yields "'axis' entry is out of bounds", although the result should be array([6]) since the rows are summed up. Maybe my two problems are linked.
  Any help will be appreciated!
  Thanks,
  Leon</p>