title: ValueError: object too deep for desired array
body: <pre><code>""" ___ """
  from scipy.optimize import root
  import numpy as np
  
  
  LENGTH = 3
  
  
  def process(x):
      return x[0, 0] + x[0, 1] * 5
  
  
  def draw(process, length):
      """ """
      X = np.matrix(np.random.normal(0, 10, (length, 2)))
      y = np.matrix([process(x) for x in X])
      y += np.random.normal(3, 1, len(y))
      return y.T, X.T
  
  
  def maximum_likelyhood(y, X):
      def objective(b):
          return (X.T * (y - X * b.T))
      x0 = np.matrix([0, 0])
      res = root(objective, x0=x0)
      return res.x
  
  y, X = draw(process, LENGTH)
  X = X.transpose()
  b = np.matrix([[0], [1]])
  print maximum_likelyhood(y, X)
  </code></pre>
  
  <p>produces a</p>
  
  <pre><code>  Traceback (most recent call last):
  File "ml.py", line 33, in &lt;module&gt;
    maximum_likelyhood(y, X)
  File "ml.py", line 26, in maximum_likelyhood
    res = root(objective, x0=x0)
  File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/_root.py", line 168, in root
    sol = _root_hybr(fun, x0, args=args, jac=jac, **options)
  File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 193, in    _root_hybr
  ml, mu, epsfcn, factor, diag)
  
  ValueError: object too deep for desired array 
  </code></pre>
  
  <p>I can't even gasp what the problem is is it in the b which goes into the objective
  function? or is it in its output?</p>