title: Second Derivative in Python - scipy/numpy/pandas
body: <p>I'm trying to take a second derivative in python with two numpy arrays of data. </p>
  
  <p>For example, the arrays in question look like this: </p>
  
  <pre><code>import numpy as np
  
  x = np.array([ 120. ,  121.5,  122. ,  122.5,  123. ,  123.5,  124. ,  124.5,
          125. ,  125.5,  126. ,  126.5,  127. ,  127.5,  128. ,  128.5,
          129. ,  129.5,  130. ,  130.5,  131. ,  131.5,  132. ,  132.5,
          133. ,  133.5,  134. ,  134.5,  135. ,  135.5,  136. ,  136.5,
          137. ,  137.5,  138. ,  138.5,  139. ,  139.5,  140. ,  140.5,
          141. ,  141.5,  142. ,  142.5,  143. ,  143.5,  144. ,  144.5,
          145. ,  145.5,  146. ,  146.5,  147. ])
  
  y = np.array([  1.25750000e+01,   1.10750000e+01,   1.05750000e+01,
           1.00750000e+01,   9.57500000e+00,   9.07500000e+00,
           8.57500000e+00,   8.07500000e+00,   7.57500000e+00,
           7.07500000e+00,   6.57500000e+00,   6.07500000e+00,
           5.57500000e+00,   5.07500000e+00,   4.57500000e+00,
           4.07500000e+00,   3.57500000e+00,   3.07500000e+00,
           2.60500000e+00,   2.14500000e+00,   1.71000000e+00,
           1.30500000e+00,   9.55000000e-01,   6.65000000e-01,
           4.35000000e-01,   2.70000000e-01,   1.55000000e-01,
           9.00000000e-02,   5.00000000e-02,   2.50000000e-02,
           1.50000000e-02,   1.00000000e-02,   1.00000000e-02,
           1.00000000e-02,   1.00000000e-02,   1.00000000e-02,
           1.00000000e-02,   1.00000000e-02,   5.00000000e-03,
           5.00000000e-03,   5.00000000e-03,   5.00000000e-03,
           5.00000000e-03,   5.00000000e-03,   5.00000000e-03,
           5.00000000e-03,   5.00000000e-03,   5.00000000e-03,
           5.00000000e-03,   5.00000000e-03,   5.00000000e-03,
           5.00000000e-03,   5.00000000e-03])
  </code></pre>
  
  <p>I currently then have <code>f(x) = y</code>, and I want <code>d^2 y / dx^2</code>. </p>
  
  <p>Numerically, I know I can either interpolate the function and take the derivative analytically or use <a href="https://en.wikipedia.org/wiki/Finite_difference#Higher-order_differences" rel="noreferrer">higher order finite-differences</a>. I think that there is enough data to use either, if one or the other is considered faster, more accurate, etc. </p>
  
  <p>I have looked at <code>np.interp()</code> and <code>scipy.interpolate</code> with no success, as this returns me a fitted (linear or cubic) spline, but don't know how to get the derivative at that point. </p>
  
  <p>Any guidance is much appreciated.</p>