numpy 1.9.3__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1590) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  12. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  13. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  16. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  17. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  23. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  31. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  32. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  33. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  39. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  41. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  42. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  43. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  45. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  49. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  50. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  51. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  52. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  56. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  57. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  58. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  59. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  60. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  61. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  62. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  63. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  64. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  65. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  66. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  70. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  71. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  72. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  73. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  74. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  75. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  82. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  83. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  84. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  85. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  86. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  87. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  88. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  89. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  90. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  91. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  138. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  139. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  142. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  143. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  147. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  148. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  154. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  155. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  165. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  166. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  197. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  198. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  199. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  200. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  204. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  205. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  206. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  210. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  211. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  212. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  213. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  214. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  215. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  216. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  217. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  218. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  219. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  230. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  231. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  232. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  233. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  234. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  235. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  236. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  237. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  238. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  239. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  240. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  241. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  242. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  243. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  244. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  245. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  246. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  247. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  248. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  249. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  250. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  251. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  252. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  253. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  254. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  267. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  268. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  269. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  272. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  273. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  274. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  275. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  276. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  277. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  278. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  279. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  280. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  281. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  282. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  283. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  284. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  285. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  286. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  287. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  288. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  289. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  290. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  291. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  292. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  293. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  313. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  314. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  315. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  316. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  317. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  318. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  319. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  320. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  322. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  323. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  324. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  325. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  326. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  327. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  328. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  329. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  330. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  335. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  336. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  337. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  338. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  339. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  343. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  344. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  345. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  346. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  347. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  348. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  349. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  350. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  351. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  353. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  354. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  355. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  356. numpy-1.10.0.post2/numpy/setup.py +29 -0
  357. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  358. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  359. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  360. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  361. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  362. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  363. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  364. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  365. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  366. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  367. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  368. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  369. numpy-1.10.0.post2/numpy/version.py +10 -0
  370. numpy-1.10.0.post2/setup.py +260 -0
  371. numpy-1.10.0.post2/site.cfg.example +193 -0
  372. numpy-1.10.0.post2/tmp.txt +789 -0
  373. numpy-1.10.0.post2/tools/swig/README +145 -0
  374. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  375. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  376. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  377. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  378. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  379. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  382. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  383. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  384. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  385. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  387. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  388. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  389. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  390. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  391. numpy-1.9.3/INSTALL.txt +0 -138
  392. numpy-1.9.3/LICENSE.txt +0 -30
  393. numpy-1.9.3/MANIFEST.in +0 -26
  394. numpy-1.9.3/PKG-INFO +0 -39
  395. numpy-1.9.3/doc/release/1.9.3-notes.rst +0 -23
  396. numpy-1.9.3/doc/source/conf.py +0 -331
  397. numpy-1.9.3/doc/source/dev/gitwash/branch_list.png +0 -0
  398. numpy-1.9.3/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  399. numpy-1.9.3/doc/source/dev/gitwash/development_workflow.rst +0 -568
  400. numpy-1.9.3/doc/source/dev/gitwash/git_links.inc +0 -88
  401. numpy-1.9.3/doc/source/dev/gitwash/index.rst +0 -14
  402. numpy-1.9.3/doc/source/dev/index.rst +0 -10
  403. numpy-1.9.3/doc/source/reference/arrays.classes.rst +0 -427
  404. numpy-1.9.3/doc/source/reference/arrays.dtypes.rst +0 -534
  405. numpy-1.9.3/doc/source/reference/arrays.indexing.rst +0 -550
  406. numpy-1.9.3/doc/source/reference/arrays.interface.rst +0 -336
  407. numpy-1.9.3/doc/source/reference/arrays.ndarray.rst +0 -609
  408. numpy-1.9.3/doc/source/reference/arrays.scalars.rst +0 -291
  409. numpy-1.9.3/doc/source/reference/c-api.array.rst +0 -3362
  410. numpy-1.9.3/doc/source/reference/c-api.config.rst +0 -103
  411. numpy-1.9.3/doc/source/reference/c-api.coremath.rst +0 -420
  412. numpy-1.9.3/doc/source/reference/c-api.dtype.rst +0 -376
  413. numpy-1.9.3/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  414. numpy-1.9.3/doc/source/reference/c-api.iterator.rst +0 -1298
  415. numpy-1.9.3/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  416. numpy-1.9.3/doc/source/reference/c-api.ufunc.rst +0 -399
  417. numpy-1.9.3/doc/source/reference/index.rst +0 -44
  418. numpy-1.9.3/doc/source/reference/internals.code-explanations.rst +0 -666
  419. numpy-1.9.3/doc/source/reference/routines.array-manipulation.rst +0 -113
  420. numpy-1.9.3/doc/source/reference/routines.io.rst +0 -74
  421. numpy-1.9.3/doc/source/reference/routines.linalg.rst +0 -88
  422. numpy-1.9.3/doc/source/reference/routines.ma.rst +0 -405
  423. numpy-1.9.3/doc/source/reference/routines.sort.rst +0 -42
  424. numpy-1.9.3/doc/source/reference/routines.statistics.rst +0 -55
  425. numpy-1.9.3/doc/source/reference/swig.interface-file.rst +0 -1055
  426. numpy-1.9.3/doc/source/reference/swig.testing.rst +0 -166
  427. numpy-1.9.3/doc/source/reference/ufuncs.rst +0 -651
  428. numpy-1.9.3/doc/source/release.rst +0 -19
  429. numpy-1.9.3/doc/source/user/basics.io.genfromtxt.rst +0 -531
  430. numpy-1.9.3/doc/source/user/basics.rec.rst +0 -7
  431. numpy-1.9.3/doc/source/user/c-info.beyond-basics.rst +0 -560
  432. numpy-1.9.3/doc/source/user/c-info.how-to-extend.rst +0 -642
  433. numpy-1.9.3/doc/source/user/c-info.python-as-glue.rst +0 -1528
  434. numpy-1.9.3/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  435. numpy-1.9.3/doc/source/user/install.rst +0 -180
  436. numpy-1.9.3/numpy/__init__.py +0 -216
  437. numpy-1.9.3/numpy/_import_tools.py +0 -348
  438. numpy-1.9.3/numpy/add_newdocs.py +0 -7518
  439. numpy-1.9.3/numpy/compat/_inspect.py +0 -221
  440. numpy-1.9.3/numpy/compat/py3k.py +0 -89
  441. numpy-1.9.3/numpy/compat/setup.py +0 -12
  442. numpy-1.9.3/numpy/core/__init__.py +0 -78
  443. numpy-1.9.3/numpy/core/_internal.py +0 -570
  444. numpy-1.9.3/numpy/core/_methods.py +0 -134
  445. numpy-1.9.3/numpy/core/arrayprint.py +0 -752
  446. numpy-1.9.3/numpy/core/blasdot/_dotblas.c +0 -1255
  447. numpy-1.9.3/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  448. numpy-1.9.3/numpy/core/blasdot/cblas.h +0 -578
  449. numpy-1.9.3/numpy/core/code_generators/cversions.txt +0 -31
  450. numpy-1.9.3/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  451. numpy-1.9.3/numpy/core/code_generators/generate_umath.py +0 -972
  452. numpy-1.9.3/numpy/core/code_generators/numpy_api.py +0 -412
  453. numpy-1.9.3/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  454. numpy-1.9.3/numpy/core/defchararray.py +0 -2687
  455. numpy-1.9.3/numpy/core/fromnumeric.py +0 -2938
  456. numpy-1.9.3/numpy/core/function_base.py +0 -190
  457. numpy-1.9.3/numpy/core/getlimits.py +0 -306
  458. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.c +0 -38
  459. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.h +0 -224
  460. numpy-1.9.3/numpy/core/include/numpy/ndarrayobject.h +0 -237
  461. numpy-1.9.3/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  462. numpy-1.9.3/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  463. numpy-1.9.3/numpy/core/include/numpy/npy_common.h +0 -1038
  464. numpy-1.9.3/numpy/core/include/numpy/npy_cpu.h +0 -122
  465. numpy-1.9.3/numpy/core/include/numpy/npy_endian.h +0 -49
  466. numpy-1.9.3/numpy/core/include/numpy/npy_math.h +0 -479
  467. numpy-1.9.3/numpy/core/include/numpy/numpyconfig.h +0 -35
  468. numpy-1.9.3/numpy/core/machar.py +0 -338
  469. numpy-1.9.3/numpy/core/memmap.py +0 -308
  470. numpy-1.9.3/numpy/core/numeric.py +0 -2842
  471. numpy-1.9.3/numpy/core/numerictypes.py +0 -1042
  472. numpy-1.9.3/numpy/core/records.py +0 -804
  473. numpy-1.9.3/numpy/core/setup.py +0 -1016
  474. numpy-1.9.3/numpy/core/setup_common.py +0 -330
  475. numpy-1.9.3/numpy/core/shape_base.py +0 -277
  476. numpy-1.9.3/numpy/core/src/multiarray/alloc.c +0 -241
  477. numpy-1.9.3/numpy/core/src/multiarray/arrayobject.c +0 -1791
  478. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  479. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.h +0 -13
  480. numpy-1.9.3/numpy/core/src/multiarray/buffer.c +0 -954
  481. numpy-1.9.3/numpy/core/src/multiarray/calculation.c +0 -1229
  482. numpy-1.9.3/numpy/core/src/multiarray/common.c +0 -798
  483. numpy-1.9.3/numpy/core/src/multiarray/common.h +0 -328
  484. numpy-1.9.3/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  485. numpy-1.9.3/numpy/core/src/multiarray/convert.c +0 -589
  486. numpy-1.9.3/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  487. numpy-1.9.3/numpy/core/src/multiarray/ctors.c +0 -3785
  488. numpy-1.9.3/numpy/core/src/multiarray/datetime.c +0 -3823
  489. numpy-1.9.3/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  490. numpy-1.9.3/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  491. numpy-1.9.3/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  492. numpy-1.9.3/numpy/core/src/multiarray/descriptor.c +0 -3658
  493. numpy-1.9.3/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  494. numpy-1.9.3/numpy/core/src/multiarray/einsum.c.src +0 -3013
  495. numpy-1.9.3/numpy/core/src/multiarray/getset.c +0 -984
  496. numpy-1.9.3/numpy/core/src/multiarray/hashdescr.c +0 -319
  497. numpy-1.9.3/numpy/core/src/multiarray/item_selection.c +0 -2711
  498. numpy-1.9.3/numpy/core/src/multiarray/iterators.c +0 -2160
  499. numpy-1.9.3/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  500. numpy-1.9.3/numpy/core/src/multiarray/mapping.c +0 -3316
  501. numpy-1.9.3/numpy/core/src/multiarray/mapping.h +0 -73
  502. numpy-1.9.3/numpy/core/src/multiarray/methods.c +0 -2497
  503. numpy-1.9.3/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  504. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.c +0 -4200
  505. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  506. numpy-1.9.3/numpy/core/src/multiarray/nditer_api.c +0 -2809
  507. numpy-1.9.3/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  508. numpy-1.9.3/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  509. numpy-1.9.3/numpy/core/src/multiarray/number.c +0 -1057
  510. numpy-1.9.3/numpy/core/src/multiarray/number.h +0 -76
  511. numpy-1.9.3/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  512. numpy-1.9.3/numpy/core/src/multiarray/numpyos.c +0 -683
  513. numpy-1.9.3/numpy/core/src/multiarray/scalarapi.c +0 -861
  514. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  515. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.h +0 -52
  516. numpy-1.9.3/numpy/core/src/multiarray/shape.c +0 -1141
  517. numpy-1.9.3/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  518. numpy-1.9.3/numpy/core/src/npymath/ieee754.c.src +0 -814
  519. numpy-1.9.3/numpy/core/src/npymath/npy_math.c.src +0 -527
  520. numpy-1.9.3/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  521. numpy-1.9.3/numpy/core/src/npymath/npy_math_private.h +0 -539
  522. numpy-1.9.3/numpy/core/src/npysort/heapsort.c.src +0 -341
  523. numpy-1.9.3/numpy/core/src/npysort/mergesort.c.src +0 -428
  524. numpy-1.9.3/numpy/core/src/npysort/npysort_common.h +0 -367
  525. numpy-1.9.3/numpy/core/src/npysort/quicksort.c.src +0 -363
  526. numpy-1.9.3/numpy/core/src/npysort/selection.c.src +0 -474
  527. numpy-1.9.3/numpy/core/src/private/npy_config.h +0 -68
  528. numpy-1.9.3/numpy/core/src/private/npy_partition.h.src +0 -138
  529. numpy-1.9.3/numpy/core/src/private/npy_sort.h +0 -194
  530. numpy-1.9.3/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  531. numpy-1.9.3/numpy/core/src/private/ufunc_override.h +0 -384
  532. numpy-1.9.3/numpy/core/src/scalarmathmodule.c.src +0 -1980
  533. numpy-1.9.3/numpy/core/src/umath/funcs.inc.src +0 -715
  534. numpy-1.9.3/numpy/core/src/umath/loops.c.src +0 -2654
  535. numpy-1.9.3/numpy/core/src/umath/loops.h.src +0 -501
  536. numpy-1.9.3/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  537. numpy-1.9.3/numpy/core/src/umath/simd.inc.src +0 -881
  538. numpy-1.9.3/numpy/core/src/umath/test_rational.c.src +0 -1404
  539. numpy-1.9.3/numpy/core/src/umath/ufunc_object.c +0 -5520
  540. numpy-1.9.3/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  541. numpy-1.9.3/numpy/core/src/umath/umath_tests.c.src +0 -341
  542. numpy-1.9.3/numpy/core/src/umath/umathmodule.c +0 -561
  543. numpy-1.9.3/numpy/core/tests/test_abc.py +0 -45
  544. numpy-1.9.3/numpy/core/tests/test_api.py +0 -514
  545. numpy-1.9.3/numpy/core/tests/test_arrayprint.py +0 -167
  546. numpy-1.9.3/numpy/core/tests/test_blasdot.py +0 -249
  547. numpy-1.9.3/numpy/core/tests/test_datetime.py +0 -1781
  548. numpy-1.9.3/numpy/core/tests/test_defchararray.py +0 -642
  549. numpy-1.9.3/numpy/core/tests/test_deprecations.py +0 -512
  550. numpy-1.9.3/numpy/core/tests/test_dtype.py +0 -542
  551. numpy-1.9.3/numpy/core/tests/test_einsum.py +0 -583
  552. numpy-1.9.3/numpy/core/tests/test_errstate.py +0 -51
  553. numpy-1.9.3/numpy/core/tests/test_function_base.py +0 -111
  554. numpy-1.9.3/numpy/core/tests/test_getlimits.py +0 -86
  555. numpy-1.9.3/numpy/core/tests/test_half.py +0 -439
  556. numpy-1.9.3/numpy/core/tests/test_indexerrors.py +0 -127
  557. numpy-1.9.3/numpy/core/tests/test_indexing.py +0 -1014
  558. numpy-1.9.3/numpy/core/tests/test_item_selection.py +0 -70
  559. numpy-1.9.3/numpy/core/tests/test_machar.py +0 -30
  560. numpy-1.9.3/numpy/core/tests/test_memmap.py +0 -127
  561. numpy-1.9.3/numpy/core/tests/test_multiarray.py +0 -4645
  562. numpy-1.9.3/numpy/core/tests/test_multiarray_assignment.py +0 -80
  563. numpy-1.9.3/numpy/core/tests/test_nditer.py +0 -2630
  564. numpy-1.9.3/numpy/core/tests/test_numeric.py +0 -2117
  565. numpy-1.9.3/numpy/core/tests/test_numerictypes.py +0 -377
  566. numpy-1.9.3/numpy/core/tests/test_print.py +0 -245
  567. numpy-1.9.3/numpy/core/tests/test_records.py +0 -185
  568. numpy-1.9.3/numpy/core/tests/test_regression.py +0 -2115
  569. numpy-1.9.3/numpy/core/tests/test_scalarinherit.py +0 -34
  570. numpy-1.9.3/numpy/core/tests/test_scalarmath.py +0 -275
  571. numpy-1.9.3/numpy/core/tests/test_shape_base.py +0 -250
  572. numpy-1.9.3/numpy/core/tests/test_ufunc.py +0 -1153
  573. numpy-1.9.3/numpy/core/tests/test_umath.py +0 -1695
  574. numpy-1.9.3/numpy/core/tests/test_umath_complex.py +0 -537
  575. numpy-1.9.3/numpy/core/tests/test_unicode.py +0 -357
  576. numpy-1.9.3/numpy/distutils/__init__.py +0 -39
  577. numpy-1.9.3/numpy/distutils/ccompiler.py +0 -656
  578. numpy-1.9.3/numpy/distutils/command/autodist.py +0 -43
  579. numpy-1.9.3/numpy/distutils/command/build.py +0 -39
  580. numpy-1.9.3/numpy/distutils/command/build_clib.py +0 -284
  581. numpy-1.9.3/numpy/distutils/command/build_ext.py +0 -515
  582. numpy-1.9.3/numpy/distutils/command/config.py +0 -476
  583. numpy-1.9.3/numpy/distutils/exec_command.py +0 -618
  584. numpy-1.9.3/numpy/distutils/fcompiler/compaq.py +0 -128
  585. numpy-1.9.3/numpy/distutils/fcompiler/gnu.py +0 -390
  586. numpy-1.9.3/numpy/distutils/fcompiler/intel.py +0 -205
  587. numpy-1.9.3/numpy/distutils/fcompiler/pg.py +0 -60
  588. numpy-1.9.3/numpy/distutils/fcompiler/sun.py +0 -52
  589. numpy-1.9.3/numpy/distutils/intelccompiler.py +0 -45
  590. numpy-1.9.3/numpy/distutils/lib2def.py +0 -116
  591. numpy-1.9.3/numpy/distutils/mingw32ccompiler.py +0 -582
  592. numpy-1.9.3/numpy/distutils/misc_util.py +0 -2271
  593. numpy-1.9.3/numpy/distutils/npy_pkg_config.py +0 -464
  594. numpy-1.9.3/numpy/distutils/system_info.py +0 -2319
  595. numpy-1.9.3/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  596. numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  597. numpy-1.9.3/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  598. numpy-1.9.3/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  599. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  600. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  601. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  602. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  603. numpy-1.9.3/numpy/distutils/tests/test_misc_util.py +0 -75
  604. numpy-1.9.3/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  605. numpy-1.9.3/numpy/distutils/unixccompiler.py +0 -113
  606. numpy-1.9.3/numpy/doc/byteswapping.py +0 -147
  607. numpy-1.9.3/numpy/doc/creation.py +0 -144
  608. numpy-1.9.3/numpy/doc/glossary.py +0 -418
  609. numpy-1.9.3/numpy/doc/indexing.py +0 -437
  610. numpy-1.9.3/numpy/doc/structured_arrays.py +0 -223
  611. numpy-1.9.3/numpy/f2py/__init__.py +0 -49
  612. numpy-1.9.3/numpy/f2py/auxfuncs.py +0 -711
  613. numpy-1.9.3/numpy/f2py/capi_maps.py +0 -773
  614. numpy-1.9.3/numpy/f2py/cb_rules.py +0 -539
  615. numpy-1.9.3/numpy/f2py/cfuncs.py +0 -1224
  616. numpy-1.9.3/numpy/f2py/common_rules.py +0 -132
  617. numpy-1.9.3/numpy/f2py/crackfortran.py +0 -2870
  618. numpy-1.9.3/numpy/f2py/diagnose.py +0 -149
  619. numpy-1.9.3/numpy/f2py/f2py2e.py +0 -598
  620. numpy-1.9.3/numpy/f2py/f2py_testing.py +0 -46
  621. numpy-1.9.3/numpy/f2py/f90mod_rules.py +0 -246
  622. numpy-1.9.3/numpy/f2py/func2subr.py +0 -291
  623. numpy-1.9.3/numpy/f2py/rules.py +0 -1448
  624. numpy-1.9.3/numpy/f2py/setup.py +0 -129
  625. numpy-1.9.3/numpy/f2py/src/fortranobject.c +0 -972
  626. numpy-1.9.3/numpy/f2py/src/fortranobject.h +0 -162
  627. numpy-1.9.3/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  628. numpy-1.9.3/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  629. numpy-1.9.3/numpy/f2py/tests/test_assumed_shape.py +0 -37
  630. numpy-1.9.3/numpy/f2py/tests/test_callback.py +0 -132
  631. numpy-1.9.3/numpy/f2py/tests/test_kind.py +0 -36
  632. numpy-1.9.3/numpy/f2py/tests/test_mixed.py +0 -41
  633. numpy-1.9.3/numpy/f2py/tests/test_regression.py +0 -32
  634. numpy-1.9.3/numpy/f2py/tests/test_return_character.py +0 -142
  635. numpy-1.9.3/numpy/f2py/tests/test_return_complex.py +0 -169
  636. numpy-1.9.3/numpy/f2py/tests/test_return_integer.py +0 -178
  637. numpy-1.9.3/numpy/f2py/tests/test_return_logical.py +0 -187
  638. numpy-1.9.3/numpy/f2py/tests/test_return_real.py +0 -203
  639. numpy-1.9.3/numpy/f2py/tests/test_size.py +0 -47
  640. numpy-1.9.3/numpy/f2py/tests/util.py +0 -353
  641. numpy-1.9.3/numpy/f2py/use_rules.py +0 -109
  642. numpy-1.9.3/numpy/fft/fftpack.c +0 -1501
  643. numpy-1.9.3/numpy/fft/fftpack.h +0 -28
  644. numpy-1.9.3/numpy/fft/fftpack.py +0 -1169
  645. numpy-1.9.3/numpy/fft/fftpack_litemodule.c +0 -371
  646. numpy-1.9.3/numpy/fft/info.py +0 -179
  647. numpy-1.9.3/numpy/fft/setup.py +0 -20
  648. numpy-1.9.3/numpy/fft/tests/test_fftpack.py +0 -75
  649. numpy-1.9.3/numpy/fft/tests/test_helper.py +0 -78
  650. numpy-1.9.3/numpy/lib/_iotools.py +0 -891
  651. numpy-1.9.3/numpy/lib/arraypad.py +0 -1475
  652. numpy-1.9.3/numpy/lib/arraysetops.py +0 -464
  653. numpy-1.9.3/numpy/lib/arrayterator.py +0 -226
  654. numpy-1.9.3/numpy/lib/financial.py +0 -737
  655. numpy-1.9.3/numpy/lib/format.py +0 -771
  656. numpy-1.9.3/numpy/lib/function_base.py +0 -3884
  657. numpy-1.9.3/numpy/lib/index_tricks.py +0 -869
  658. numpy-1.9.3/numpy/lib/info.py +0 -151
  659. numpy-1.9.3/numpy/lib/nanfunctions.py +0 -1158
  660. numpy-1.9.3/numpy/lib/npyio.py +0 -1871
  661. numpy-1.9.3/numpy/lib/polynomial.py +0 -1271
  662. numpy-1.9.3/numpy/lib/recfunctions.py +0 -1003
  663. numpy-1.9.3/numpy/lib/setup.py +0 -23
  664. numpy-1.9.3/numpy/lib/shape_base.py +0 -865
  665. numpy-1.9.3/numpy/lib/src/_compiled_base.c +0 -1761
  666. numpy-1.9.3/numpy/lib/stride_tricks.py +0 -123
  667. numpy-1.9.3/numpy/lib/tests/test__iotools.py +0 -326
  668. numpy-1.9.3/numpy/lib/tests/test__version.py +0 -57
  669. numpy-1.9.3/numpy/lib/tests/test_arraypad.py +0 -560
  670. numpy-1.9.3/numpy/lib/tests/test_arraysetops.py +0 -301
  671. numpy-1.9.3/numpy/lib/tests/test_financial.py +0 -160
  672. numpy-1.9.3/numpy/lib/tests/test_format.py +0 -716
  673. numpy-1.9.3/numpy/lib/tests/test_function_base.py +0 -2145
  674. numpy-1.9.3/numpy/lib/tests/test_index_tricks.py +0 -289
  675. numpy-1.9.3/numpy/lib/tests/test_io.py +0 -1754
  676. numpy-1.9.3/numpy/lib/tests/test_nanfunctions.py +0 -774
  677. numpy-1.9.3/numpy/lib/tests/test_polynomial.py +0 -177
  678. numpy-1.9.3/numpy/lib/tests/test_recfunctions.py +0 -705
  679. numpy-1.9.3/numpy/lib/tests/test_shape_base.py +0 -368
  680. numpy-1.9.3/numpy/lib/tests/test_stride_tricks.py +0 -238
  681. numpy-1.9.3/numpy/lib/tests/test_twodim_base.py +0 -504
  682. numpy-1.9.3/numpy/lib/tests/test_type_check.py +0 -328
  683. numpy-1.9.3/numpy/lib/twodim_base.py +0 -1003
  684. numpy-1.9.3/numpy/lib/type_check.py +0 -605
  685. numpy-1.9.3/numpy/lib/utils.py +0 -1176
  686. numpy-1.9.3/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  687. numpy-1.9.3/numpy/linalg/lapack_litemodule.c +0 -362
  688. numpy-1.9.3/numpy/linalg/linalg.py +0 -2136
  689. numpy-1.9.3/numpy/linalg/tests/test_build.py +0 -53
  690. numpy-1.9.3/numpy/linalg/tests/test_linalg.py +0 -1156
  691. numpy-1.9.3/numpy/linalg/tests/test_regression.py +0 -90
  692. numpy-1.9.3/numpy/linalg/umath_linalg.c.src +0 -3210
  693. numpy-1.9.3/numpy/ma/__init__.py +0 -58
  694. numpy-1.9.3/numpy/ma/bench.py +0 -166
  695. numpy-1.9.3/numpy/ma/core.py +0 -7374
  696. numpy-1.9.3/numpy/ma/extras.py +0 -1932
  697. numpy-1.9.3/numpy/ma/mrecords.py +0 -734
  698. numpy-1.9.3/numpy/ma/setup.py +0 -20
  699. numpy-1.9.3/numpy/ma/tests/test_core.py +0 -3706
  700. numpy-1.9.3/numpy/ma/tests/test_extras.py +0 -954
  701. numpy-1.9.3/numpy/ma/tests/test_mrecords.py +0 -521
  702. numpy-1.9.3/numpy/ma/tests/test_old_ma.py +0 -869
  703. numpy-1.9.3/numpy/ma/tests/test_regression.py +0 -75
  704. numpy-1.9.3/numpy/ma/tests/test_subclassing.py +0 -236
  705. numpy-1.9.3/numpy/ma/testutils.py +0 -240
  706. numpy-1.9.3/numpy/ma/timer_comparison.py +0 -459
  707. numpy-1.9.3/numpy/matlib.py +0 -358
  708. numpy-1.9.3/numpy/matrixlib/defmatrix.py +0 -1094
  709. numpy-1.9.3/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  710. numpy-1.9.3/numpy/matrixlib/tests/test_multiarray.py +0 -18
  711. numpy-1.9.3/numpy/matrixlib/tests/test_numeric.py +0 -10
  712. numpy-1.9.3/numpy/matrixlib/tests/test_regression.py +0 -34
  713. numpy-1.9.3/numpy/polynomial/_polybase.py +0 -962
  714. numpy-1.9.3/numpy/polynomial/chebyshev.py +0 -2056
  715. numpy-1.9.3/numpy/polynomial/hermite.py +0 -1789
  716. numpy-1.9.3/numpy/polynomial/hermite_e.py +0 -1786
  717. numpy-1.9.3/numpy/polynomial/laguerre.py +0 -1781
  718. numpy-1.9.3/numpy/polynomial/legendre.py +0 -1809
  719. numpy-1.9.3/numpy/polynomial/polytemplate.py +0 -927
  720. numpy-1.9.3/numpy/polynomial/polyutils.py +0 -403
  721. numpy-1.9.3/numpy/random/mtrand/distributions.c +0 -892
  722. numpy-1.9.3/numpy/random/mtrand/mtrand.c +0 -36656
  723. numpy-1.9.3/numpy/random/mtrand/mtrand.pyx +0 -4706
  724. numpy-1.9.3/numpy/random/setup.py +0 -74
  725. numpy-1.9.3/numpy/random/tests/test_random.py +0 -707
  726. numpy-1.9.3/numpy/random/tests/test_regression.py +0 -86
  727. numpy-1.9.3/numpy/setup.py +0 -27
  728. numpy-1.9.3/numpy/testing/__init__.py +0 -16
  729. numpy-1.9.3/numpy/testing/decorators.py +0 -271
  730. numpy-1.9.3/numpy/testing/noseclasses.py +0 -353
  731. numpy-1.9.3/numpy/testing/nosetester.py +0 -504
  732. numpy-1.9.3/numpy/testing/print_coercion_tables.py +0 -89
  733. numpy-1.9.3/numpy/testing/setup.py +0 -20
  734. numpy-1.9.3/numpy/testing/tests/test_decorators.py +0 -185
  735. numpy-1.9.3/numpy/testing/tests/test_utils.py +0 -558
  736. numpy-1.9.3/numpy/testing/utils.py +0 -1715
  737. numpy-1.9.3/numpy/tests/test_ctypeslib.py +0 -102
  738. numpy-1.9.3/numpy/tests/test_matlib.py +0 -55
  739. numpy-1.9.3/numpy/version.py +0 -10
  740. numpy-1.9.3/setup.py +0 -251
  741. numpy-1.9.3/site.cfg.example +0 -157
  742. numpy-1.9.3/tools/swig/README +0 -135
  743. numpy-1.9.3/tools/swig/numpy.i +0 -3085
  744. numpy-1.9.3/tools/swig/test/Array.i +0 -102
  745. numpy-1.9.3/tools/swig/test/Makefile +0 -34
  746. numpy-1.9.3/tools/swig/test/setup.py +0 -64
  747. numpy-1.9.3/tools/swig/test/testArray.py +0 -284
  748. numpy-1.9.3/tools/swig/test/testFarray.py +0 -159
  749. numpy-1.9.3/tools/swig/test/testFortran.py +0 -173
  750. numpy-1.9.3/tools/swig/test/testMatrix.py +0 -362
  751. numpy-1.9.3/tools/swig/test/testSuperTensor.py +0 -388
  752. numpy-1.9.3/tools/swig/test/testTensor.py +0 -402
  753. numpy-1.9.3/tools/swig/test/testVector.py +0 -381
  754. {numpy-1.9.3 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  755. {numpy-1.9.3 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  756. {numpy-1.9.3 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  757. {numpy-1.9.3 → numpy-1.10.0.post2}/README.txt +0 -0
  758. {numpy-1.9.3 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  759. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  760. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  761. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  762. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  763. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  764. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  765. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  766. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  767. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  768. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  769. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  770. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  771. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  772. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  773. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  774. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  775. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  776. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  777. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  778. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  779. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  780. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  781. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  782. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  783. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  784. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  785. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  786. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  787. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  788. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  789. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  790. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  791. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  792. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  793. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  794. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  795. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  796. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  797. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  798. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  799. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  800. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  801. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  802. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  803. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  804. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  805. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  806. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  807. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  808. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  809. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  810. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  811. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  812. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  813. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  814. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  815. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  816. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  817. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  818. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  819. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  820. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  821. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  822. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  823. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  824. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  825. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  826. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  827. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  828. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  829. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  830. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  831. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  832. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  833. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  834. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  835. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  836. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  837. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  838. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  839. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  840. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.git +0 -0
  841. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  842. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  843. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  844. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  845. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  846. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  847. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  848. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  849. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  850. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  851. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  852. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  853. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  854. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  855. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  856. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  857. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  858. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  859. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  860. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  861. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  862. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  863. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  864. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  865. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  866. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  867. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  868. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  869. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  870. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  871. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  872. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  873. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  874. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  875. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  876. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  877. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  878. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  879. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  880. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  881. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  882. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  883. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  884. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  885. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  886. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  887. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  888. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  889. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  890. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  891. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  892. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  893. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  894. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  895. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  896. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  897. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  898. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  899. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  900. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  901. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  902. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  903. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  904. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  905. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  906. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  907. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  908. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  909. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  910. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  911. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  912. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  913. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  914. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  915. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  916. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  917. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  918. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  919. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  920. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  921. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  922. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  923. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  924. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  925. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  926. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  927. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  928. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  929. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  930. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  931. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  932. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  933. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  934. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  935. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  936. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  937. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  938. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  939. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  940. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  941. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  942. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  943. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  944. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  945. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  946. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  947. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  948. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  949. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  950. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  951. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  952. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  953. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  954. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  955. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  956. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  957. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  958. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  959. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  960. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  961. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  962. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  963. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  964. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  965. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  966. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  967. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  968. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  969. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  970. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  971. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  972. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  973. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  974. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  975. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  976. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  977. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  978. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  979. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  980. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  981. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  982. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  983. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  984. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  985. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  986. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  987. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  988. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  989. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  990. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  991. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  992. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  993. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  994. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  995. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  996. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  997. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  998. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  999. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1000. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1001. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1002. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1003. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1004. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1005. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1006. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1007. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1008. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1009. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1010. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1011. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1012. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1013. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1014. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1015. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1016. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1017. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1018. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1019. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1020. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1021. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1022. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1023. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1024. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1025. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1026. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1027. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1028. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1029. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1030. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1031. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1032. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1033. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1034. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1035. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1036. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1037. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1038. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1039. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1040. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1041. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1042. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1043. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1044. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1045. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1046. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1047. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1048. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1049. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1050. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1051. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1052. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1053. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1054. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1055. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1056. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1057. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1058. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1059. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1060. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1061. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1062. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1063. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1064. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1065. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1066. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1067. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1068. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1069. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1070. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1071. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1072. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1073. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1074. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1075. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1076. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1077. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1078. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1079. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1080. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1081. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1082. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1083. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1084. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1085. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1086. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1087. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1088. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1089. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1090. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1091. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1092. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1093. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1094. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1095. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1096. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1097. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1098. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1099. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1100. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1101. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1102. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1103. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1104. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1105. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1106. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1107. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1108. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1109. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1110. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1111. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1112. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1113. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1114. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1115. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1116. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1117. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1118. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1119. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1120. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1121. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1122. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1123. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1124. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1125. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1126. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1127. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1128. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1129. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1130. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1131. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1132. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1133. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1134. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1135. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1136. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1137. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1138. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1139. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1140. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1141. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1142. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1143. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1144. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1145. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1146. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1147. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1148. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1149. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1150. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1151. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1152. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1153. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1154. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1155. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1156. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1157. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1158. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1159. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1160. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1161. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1162. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1163. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1164. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1165. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1166. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1167. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1168. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1169. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1170. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1171. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1172. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1173. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1174. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1175. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1176. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1177. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1178. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1179. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1180. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1181. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1182. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1183. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1184. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1185. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1186. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1187. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1188. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1189. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1190. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1191. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1192. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1193. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1194. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1195. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1196. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1197. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1198. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1199. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1200. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1201. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1202. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1203. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1204. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1205. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1206. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1207. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1208. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1209. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1210. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1211. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1212. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1213. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1214. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1215. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1216. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1217. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1218. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1219. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1220. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1221. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1222. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1223. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1224. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1225. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1226. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1227. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1228. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1229. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1230. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1231. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1232. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1233. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1234. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1235. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1236. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1237. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1238. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1239. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1240. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1241. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1242. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1243. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1244. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1245. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1246. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1247. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1248. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1249. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1250. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1251. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1252. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1253. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1254. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1255. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1256. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1257. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1258. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1259. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1260. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1261. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1262. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1263. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1264. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1265. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1266. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1267. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1268. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1269. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1270. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1271. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1272. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1273. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1274. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1275. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1276. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1277. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1278. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1279. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1280. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1281. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1282. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1283. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1284. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1285. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1286. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1287. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1288. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1289. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1290. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1291. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1292. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1293. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1294. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1295. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1296. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1297. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1298. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1299. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1300. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1301. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1302. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1303. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1304. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1305. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1306. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1307. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1308. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1309. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1310. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1311. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1312. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1313. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1314. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1315. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1316. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1317. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1318. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1319. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1320. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1321. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1322. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1323. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1324. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1325. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1326. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1327. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.git +0 -0
  1328. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1329. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1330. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1331. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1332. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1333. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1334. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1335. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1336. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1337. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1338. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1339. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1340. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1341. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1342. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1343. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1344. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1345. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1346. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1347. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1348. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1349. {numpy-1.9.3/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1350. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1351. {numpy-1.9.3/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1352. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1353. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1354. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1355. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1356. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1357. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1358. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1359. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1360. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1361. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1362. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1363. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1364. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1365. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1366. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1367. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1368. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1369. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1370. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1371. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1372. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1373. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1374. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1375. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1376. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1377. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1378. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1379. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1380. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1381. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1382. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1383. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1384. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1385. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1386. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1387. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1388. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1389. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1390. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1391. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1392. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1393. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1394. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1395. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1396. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1397. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1398. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1399. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1400. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1401. {numpy-1.9.3/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1402. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1403. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1404. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1405. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1406. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1407. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1408. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1409. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1410. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1411. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1412. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1413. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1414. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1415. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1416. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1417. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1418. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1419. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1420. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1421. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1422. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1423. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1424. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1425. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1426. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1427. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1428. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1429. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1430. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1431. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1432. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1433. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1434. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1435. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1436. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1437. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1438. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1439. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1440. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1441. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1442. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1443. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1444. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1445. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1446. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1447. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1448. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1449. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1450. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1451. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1452. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1453. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1454. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1455. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1456. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1457. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1458. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1459. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1460. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1461. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1462. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1463. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1464. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1465. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1466. {numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1467. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1468. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1469. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1470. {numpy-1.9.3/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1471. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1472. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1473. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1474. {numpy-1.9.3/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1475. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1476. {numpy-1.9.3/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1477. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1478. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1479. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1480. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1481. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1482. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1483. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1484. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1485. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1486. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1487. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1488. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1489. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1490. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1491. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1492. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1493. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1494. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1495. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1496. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1497. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1498. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1499. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1500. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1501. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1502. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1503. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1504. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1505. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1506. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1507. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1508. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1509. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1510. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1511. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1512. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1513. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1514. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1515. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1516. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1517. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1518. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1519. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1520. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1521. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1522. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1523. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1524. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1525. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1526. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1527. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1528. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1529. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1530. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1531. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1532. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1533. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1534. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1535. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1536. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1537. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1538. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1539. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1540. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1541. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1542. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1543. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1544. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1545. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1546. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1547. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1548. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1549. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1550. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1551. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1552. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1553. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1554. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1555. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1556. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1557. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1558. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1559. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1560. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1561. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1562. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1563. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1564. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1565. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1566. {numpy-1.9.3 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1567. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1568. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1569. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1570. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1571. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1572. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1573. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1574. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1575. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1576. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1577. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1578. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1579. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1580. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1581. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1582. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1583. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1584. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1585. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1586. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1587. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1588. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1589. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1590. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -0,0 +1,4150 @@
1
+ from __future__ import division, absolute_import, print_function
2
+
3
+ import warnings
4
+ import sys
5
+ import collections
6
+ import operator
7
+
8
+ import numpy as np
9
+ import numpy.core.numeric as _nx
10
+ from numpy.core import linspace, atleast_1d, atleast_2d
11
+ from numpy.core.numeric import (
12
+ ones, zeros, arange, concatenate, array, asarray, asanyarray, empty,
13
+ empty_like, ndarray, around, floor, ceil, take, dot, where, intp,
14
+ integer, isscalar
15
+ )
16
+ from numpy.core.umath import (
17
+ pi, multiply, add, arctan2, frompyfunc, cos, less_equal, sqrt, sin,
18
+ mod, exp, log10
19
+ )
20
+ from numpy.core.fromnumeric import (
21
+ ravel, nonzero, sort, partition, mean, any, sum
22
+ )
23
+ from numpy.core.numerictypes import typecodes, number
24
+ from numpy.lib.twodim_base import diag
25
+ from .utils import deprecate
26
+ from numpy.core.multiarray import _insert, add_docstring
27
+ from numpy.core.multiarray import digitize, bincount, interp as compiled_interp
28
+ from numpy.core.umath import _add_newdoc_ufunc as add_newdoc_ufunc
29
+ from numpy.compat import long
30
+
31
+ # Force range to be a generator, for np.delete's usage.
32
+ if sys.version_info[0] < 3:
33
+ range = xrange
34
+
35
+
36
+ __all__ = [
37
+ 'select', 'piecewise', 'trim_zeros', 'copy', 'iterable', 'percentile',
38
+ 'diff', 'gradient', 'angle', 'unwrap', 'sort_complex', 'disp',
39
+ 'extract', 'place', 'vectorize', 'asarray_chkfinite', 'average',
40
+ 'histogram', 'histogramdd', 'bincount', 'digitize', 'cov', 'corrcoef',
41
+ 'msort', 'median', 'sinc', 'hamming', 'hanning', 'bartlett',
42
+ 'blackman', 'kaiser', 'trapz', 'i0', 'add_newdoc', 'add_docstring',
43
+ 'meshgrid', 'delete', 'insert', 'append', 'interp', 'add_newdoc_ufunc'
44
+ ]
45
+
46
+
47
+ def iterable(y):
48
+ """
49
+ Check whether or not an object can be iterated over.
50
+
51
+ Parameters
52
+ ----------
53
+ y : object
54
+ Input object.
55
+
56
+ Returns
57
+ -------
58
+ b : {0, 1}
59
+ Return 1 if the object has an iterator method or is a sequence,
60
+ and 0 otherwise.
61
+
62
+
63
+ Examples
64
+ --------
65
+ >>> np.iterable([1, 2, 3])
66
+ 1
67
+ >>> np.iterable(2)
68
+ 0
69
+
70
+ """
71
+ try:
72
+ iter(y)
73
+ except:
74
+ return 0
75
+ return 1
76
+
77
+
78
+ def histogram(a, bins=10, range=None, normed=False, weights=None,
79
+ density=None):
80
+ """
81
+ Compute the histogram of a set of data.
82
+
83
+ Parameters
84
+ ----------
85
+ a : array_like
86
+ Input data. The histogram is computed over the flattened array.
87
+ bins : int or sequence of scalars, optional
88
+ If `bins` is an int, it defines the number of equal-width
89
+ bins in the given range (10, by default). If `bins` is a sequence,
90
+ it defines the bin edges, including the rightmost edge, allowing
91
+ for non-uniform bin widths.
92
+ range : (float, float), optional
93
+ The lower and upper range of the bins. If not provided, range
94
+ is simply ``(a.min(), a.max())``. Values outside the range are
95
+ ignored.
96
+ normed : bool, optional
97
+ This keyword is deprecated in Numpy 1.6 due to confusing/buggy
98
+ behavior. It will be removed in Numpy 2.0. Use the density keyword
99
+ instead.
100
+ If False, the result will contain the number of samples
101
+ in each bin. If True, the result is the value of the
102
+ probability *density* function at the bin, normalized such that
103
+ the *integral* over the range is 1. Note that this latter behavior is
104
+ known to be buggy with unequal bin widths; use `density` instead.
105
+ weights : array_like, optional
106
+ An array of weights, of the same shape as `a`. Each value in `a`
107
+ only contributes its associated weight towards the bin count
108
+ (instead of 1). If `normed` is True, the weights are normalized,
109
+ so that the integral of the density over the range remains 1
110
+ density : bool, optional
111
+ If False, the result will contain the number of samples
112
+ in each bin. If True, the result is the value of the
113
+ probability *density* function at the bin, normalized such that
114
+ the *integral* over the range is 1. Note that the sum of the
115
+ histogram values will not be equal to 1 unless bins of unity
116
+ width are chosen; it is not a probability *mass* function.
117
+ Overrides the `normed` keyword if given.
118
+
119
+ Returns
120
+ -------
121
+ hist : array
122
+ The values of the histogram. See `normed` and `weights` for a
123
+ description of the possible semantics.
124
+ bin_edges : array of dtype float
125
+ Return the bin edges ``(length(hist)+1)``.
126
+
127
+
128
+ See Also
129
+ --------
130
+ histogramdd, bincount, searchsorted, digitize
131
+
132
+ Notes
133
+ -----
134
+ All but the last (righthand-most) bin is half-open. In other words, if
135
+ `bins` is::
136
+
137
+ [1, 2, 3, 4]
138
+
139
+ then the first bin is ``[1, 2)`` (including 1, but excluding 2) and the
140
+ second ``[2, 3)``. The last bin, however, is ``[3, 4]``, which *includes*
141
+ 4.
142
+
143
+ Examples
144
+ --------
145
+ >>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
146
+ (array([0, 2, 1]), array([0, 1, 2, 3]))
147
+ >>> np.histogram(np.arange(4), bins=np.arange(5), density=True)
148
+ (array([ 0.25, 0.25, 0.25, 0.25]), array([0, 1, 2, 3, 4]))
149
+ >>> np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3])
150
+ (array([1, 4, 1]), array([0, 1, 2, 3]))
151
+
152
+ >>> a = np.arange(5)
153
+ >>> hist, bin_edges = np.histogram(a, density=True)
154
+ >>> hist
155
+ array([ 0.5, 0. , 0.5, 0. , 0. , 0.5, 0. , 0.5, 0. , 0.5])
156
+ >>> hist.sum()
157
+ 2.4999999999999996
158
+ >>> np.sum(hist*np.diff(bin_edges))
159
+ 1.0
160
+
161
+ """
162
+
163
+ a = asarray(a)
164
+ if weights is not None:
165
+ weights = asarray(weights)
166
+ if np.any(weights.shape != a.shape):
167
+ raise ValueError(
168
+ 'weights should have the same shape as a.')
169
+ weights = weights.ravel()
170
+ a = a.ravel()
171
+
172
+ if (range is not None):
173
+ mn, mx = range
174
+ if (mn > mx):
175
+ raise AttributeError(
176
+ 'max must be larger than min in range parameter.')
177
+
178
+ # Histogram is an integer or a float array depending on the weights.
179
+ if weights is None:
180
+ ntype = np.dtype(np.intp)
181
+ else:
182
+ ntype = weights.dtype
183
+
184
+ # We set a block size, as this allows us to iterate over chunks when
185
+ # computing histograms, to minimize memory usage.
186
+ BLOCK = 65536
187
+
188
+ if not iterable(bins):
189
+ if np.isscalar(bins) and bins < 1:
190
+ raise ValueError(
191
+ '`bins` should be a positive integer.')
192
+ if range is None:
193
+ if a.size == 0:
194
+ # handle empty arrays. Can't determine range, so use 0-1.
195
+ range = (0, 1)
196
+ else:
197
+ range = (a.min(), a.max())
198
+ mn, mx = [mi + 0.0 for mi in range]
199
+ if mn == mx:
200
+ mn -= 0.5
201
+ mx += 0.5
202
+ # At this point, if the weights are not integer, floating point, or
203
+ # complex, we have to use the slow algorithm.
204
+ if weights is not None and not (np.can_cast(weights.dtype, np.double) or
205
+ np.can_cast(weights.dtype, np.complex)):
206
+ bins = linspace(mn, mx, bins + 1, endpoint=True)
207
+
208
+ if not iterable(bins):
209
+ # We now convert values of a to bin indices, under the assumption of
210
+ # equal bin widths (which is valid here).
211
+
212
+ # Initialize empty histogram
213
+ n = np.zeros(bins, ntype)
214
+ # Pre-compute histogram scaling factor
215
+ norm = bins / (mx - mn)
216
+
217
+ # We iterate over blocks here for two reasons: the first is that for
218
+ # large arrays, it is actually faster (for example for a 10^8 array it
219
+ # is 2x as fast) and it results in a memory footprint 3x lower in the
220
+ # limit of large arrays.
221
+ for i in arange(0, len(a), BLOCK):
222
+ tmp_a = a[i:i+BLOCK]
223
+ if weights is None:
224
+ tmp_w = None
225
+ else:
226
+ tmp_w = weights[i:i + BLOCK]
227
+
228
+ # Only include values in the right range
229
+ keep = (tmp_a >= mn)
230
+ keep &= (tmp_a <= mx)
231
+ if not np.logical_and.reduce(keep):
232
+ tmp_a = tmp_a[keep]
233
+ if tmp_w is not None:
234
+ tmp_w = tmp_w[keep]
235
+ tmp_a = tmp_a.astype(float)
236
+ tmp_a -= mn
237
+ tmp_a *= norm
238
+
239
+ # Compute the bin indices, and for values that lie exactly on mx we
240
+ # need to subtract one
241
+ indices = tmp_a.astype(np.intp)
242
+ indices[indices == bins] -= 1
243
+
244
+ # We now compute the histogram using bincount
245
+ if ntype.kind == 'c':
246
+ n.real += np.bincount(indices, weights=tmp_w.real, minlength=bins)
247
+ n.imag += np.bincount(indices, weights=tmp_w.imag, minlength=bins)
248
+ else:
249
+ n += np.bincount(indices, weights=tmp_w, minlength=bins).astype(ntype)
250
+
251
+ # We now compute the bin edges since these are returned
252
+ bins = linspace(mn, mx, bins + 1, endpoint=True)
253
+ else:
254
+ bins = asarray(bins)
255
+ if (np.diff(bins) < 0).any():
256
+ raise AttributeError(
257
+ 'bins must increase monotonically.')
258
+
259
+ # Initialize empty histogram
260
+ n = np.zeros(bins.shape, ntype)
261
+
262
+ if weights is None:
263
+ for i in arange(0, len(a), BLOCK):
264
+ sa = sort(a[i:i+BLOCK])
265
+ n += np.r_[sa.searchsorted(bins[:-1], 'left'),
266
+ sa.searchsorted(bins[-1], 'right')]
267
+ else:
268
+ zero = array(0, dtype=ntype)
269
+ for i in arange(0, len(a), BLOCK):
270
+ tmp_a = a[i:i+BLOCK]
271
+ tmp_w = weights[i:i+BLOCK]
272
+ sorting_index = np.argsort(tmp_a)
273
+ sa = tmp_a[sorting_index]
274
+ sw = tmp_w[sorting_index]
275
+ cw = np.concatenate(([zero, ], sw.cumsum()))
276
+ bin_index = np.r_[sa.searchsorted(bins[:-1], 'left'),
277
+ sa.searchsorted(bins[-1], 'right')]
278
+ n += cw[bin_index]
279
+
280
+
281
+ n = np.diff(n)
282
+
283
+ if density is not None:
284
+ if density:
285
+ db = array(np.diff(bins), float)
286
+ return n/db/n.sum(), bins
287
+ else:
288
+ return n, bins
289
+ else:
290
+ # deprecated, buggy behavior. Remove for Numpy 2.0
291
+ if normed:
292
+ db = array(np.diff(bins), float)
293
+ return n/(n*db).sum(), bins
294
+ else:
295
+ return n, bins
296
+
297
+
298
+ def histogramdd(sample, bins=10, range=None, normed=False, weights=None):
299
+ """
300
+ Compute the multidimensional histogram of some data.
301
+
302
+ Parameters
303
+ ----------
304
+ sample : array_like
305
+ The data to be histogrammed. It must be an (N,D) array or data
306
+ that can be converted to such. The rows of the resulting array
307
+ are the coordinates of points in a D dimensional polytope.
308
+ bins : sequence or int, optional
309
+ The bin specification:
310
+
311
+ * A sequence of arrays describing the bin edges along each dimension.
312
+ * The number of bins for each dimension (nx, ny, ... =bins)
313
+ * The number of bins for all dimensions (nx=ny=...=bins).
314
+
315
+ range : sequence, optional
316
+ A sequence of lower and upper bin edges to be used if the edges are
317
+ not given explicitly in `bins`. Defaults to the minimum and maximum
318
+ values along each dimension.
319
+ normed : bool, optional
320
+ If False, returns the number of samples in each bin. If True,
321
+ returns the bin density ``bin_count / sample_count / bin_volume``.
322
+ weights : (N,) array_like, optional
323
+ An array of values `w_i` weighing each sample `(x_i, y_i, z_i, ...)`.
324
+ Weights are normalized to 1 if normed is True. If normed is False,
325
+ the values of the returned histogram are equal to the sum of the
326
+ weights belonging to the samples falling into each bin.
327
+
328
+ Returns
329
+ -------
330
+ H : ndarray
331
+ The multidimensional histogram of sample x. See normed and weights
332
+ for the different possible semantics.
333
+ edges : list
334
+ A list of D arrays describing the bin edges for each dimension.
335
+
336
+ See Also
337
+ --------
338
+ histogram: 1-D histogram
339
+ histogram2d: 2-D histogram
340
+
341
+ Examples
342
+ --------
343
+ >>> r = np.random.randn(100,3)
344
+ >>> H, edges = np.histogramdd(r, bins = (5, 8, 4))
345
+ >>> H.shape, edges[0].size, edges[1].size, edges[2].size
346
+ ((5, 8, 4), 6, 9, 5)
347
+
348
+ """
349
+
350
+ try:
351
+ # Sample is an ND-array.
352
+ N, D = sample.shape
353
+ except (AttributeError, ValueError):
354
+ # Sample is a sequence of 1D arrays.
355
+ sample = atleast_2d(sample).T
356
+ N, D = sample.shape
357
+
358
+ nbin = empty(D, int)
359
+ edges = D*[None]
360
+ dedges = D*[None]
361
+ if weights is not None:
362
+ weights = asarray(weights)
363
+
364
+ try:
365
+ M = len(bins)
366
+ if M != D:
367
+ raise AttributeError(
368
+ 'The dimension of bins must be equal to the dimension of the '
369
+ ' sample x.')
370
+ except TypeError:
371
+ # bins is an integer
372
+ bins = D*[bins]
373
+
374
+ # Select range for each dimension
375
+ # Used only if number of bins is given.
376
+ if range is None:
377
+ # Handle empty input. Range can't be determined in that case, use 0-1.
378
+ if N == 0:
379
+ smin = zeros(D)
380
+ smax = ones(D)
381
+ else:
382
+ smin = atleast_1d(array(sample.min(0), float))
383
+ smax = atleast_1d(array(sample.max(0), float))
384
+ else:
385
+ smin = zeros(D)
386
+ smax = zeros(D)
387
+ for i in arange(D):
388
+ smin[i], smax[i] = range[i]
389
+
390
+ # Make sure the bins have a finite width.
391
+ for i in arange(len(smin)):
392
+ if smin[i] == smax[i]:
393
+ smin[i] = smin[i] - .5
394
+ smax[i] = smax[i] + .5
395
+
396
+ # avoid rounding issues for comparisons when dealing with inexact types
397
+ if np.issubdtype(sample.dtype, np.inexact):
398
+ edge_dt = sample.dtype
399
+ else:
400
+ edge_dt = float
401
+ # Create edge arrays
402
+ for i in arange(D):
403
+ if isscalar(bins[i]):
404
+ if bins[i] < 1:
405
+ raise ValueError(
406
+ "Element at index %s in `bins` should be a positive "
407
+ "integer." % i)
408
+ nbin[i] = bins[i] + 2 # +2 for outlier bins
409
+ edges[i] = linspace(smin[i], smax[i], nbin[i]-1, dtype=edge_dt)
410
+ else:
411
+ edges[i] = asarray(bins[i], edge_dt)
412
+ nbin[i] = len(edges[i]) + 1 # +1 for outlier bins
413
+ dedges[i] = diff(edges[i])
414
+ if np.any(np.asarray(dedges[i]) <= 0):
415
+ raise ValueError(
416
+ "Found bin edge of size <= 0. Did you specify `bins` with"
417
+ "non-monotonic sequence?")
418
+
419
+ nbin = asarray(nbin)
420
+
421
+ # Handle empty input.
422
+ if N == 0:
423
+ return np.zeros(nbin-2), edges
424
+
425
+ # Compute the bin number each sample falls into.
426
+ Ncount = {}
427
+ for i in arange(D):
428
+ Ncount[i] = digitize(sample[:, i], edges[i])
429
+
430
+ # Using digitize, values that fall on an edge are put in the right bin.
431
+ # For the rightmost bin, we want values equal to the right edge to be
432
+ # counted in the last bin, and not as an outlier.
433
+ for i in arange(D):
434
+ # Rounding precision
435
+ mindiff = dedges[i].min()
436
+ if not np.isinf(mindiff):
437
+ decimal = int(-log10(mindiff)) + 6
438
+ # Find which points are on the rightmost edge.
439
+ not_smaller_than_edge = (sample[:, i] >= edges[i][-1])
440
+ on_edge = (around(sample[:, i], decimal) ==
441
+ around(edges[i][-1], decimal))
442
+ # Shift these points one bin to the left.
443
+ Ncount[i][where(on_edge & not_smaller_than_edge)[0]] -= 1
444
+
445
+ # Flattened histogram matrix (1D)
446
+ # Reshape is used so that overlarge arrays
447
+ # will raise an error.
448
+ hist = zeros(nbin, float).reshape(-1)
449
+
450
+ # Compute the sample indices in the flattened histogram matrix.
451
+ ni = nbin.argsort()
452
+ xy = zeros(N, int)
453
+ for i in arange(0, D-1):
454
+ xy += Ncount[ni[i]] * nbin[ni[i+1:]].prod()
455
+ xy += Ncount[ni[-1]]
456
+
457
+ # Compute the number of repetitions in xy and assign it to the
458
+ # flattened histmat.
459
+ if len(xy) == 0:
460
+ return zeros(nbin-2, int), edges
461
+
462
+ flatcount = bincount(xy, weights)
463
+ a = arange(len(flatcount))
464
+ hist[a] = flatcount
465
+
466
+ # Shape into a proper matrix
467
+ hist = hist.reshape(sort(nbin))
468
+ for i in arange(nbin.size):
469
+ j = ni.argsort()[i]
470
+ hist = hist.swapaxes(i, j)
471
+ ni[i], ni[j] = ni[j], ni[i]
472
+
473
+ # Remove outliers (indices 0 and -1 for each dimension).
474
+ core = D*[slice(1, -1)]
475
+ hist = hist[core]
476
+
477
+ # Normalize if normed is True
478
+ if normed:
479
+ s = hist.sum()
480
+ for i in arange(D):
481
+ shape = ones(D, int)
482
+ shape[i] = nbin[i] - 2
483
+ hist = hist / dedges[i].reshape(shape)
484
+ hist /= s
485
+
486
+ if (hist.shape != nbin - 2).any():
487
+ raise RuntimeError(
488
+ "Internal Shape Error")
489
+ return hist, edges
490
+
491
+
492
+ def average(a, axis=None, weights=None, returned=False):
493
+ """
494
+ Compute the weighted average along the specified axis.
495
+
496
+ Parameters
497
+ ----------
498
+ a : array_like
499
+ Array containing data to be averaged. If `a` is not an array, a
500
+ conversion is attempted.
501
+ axis : int, optional
502
+ Axis along which to average `a`. If `None`, averaging is done over
503
+ the flattened array.
504
+ weights : array_like, optional
505
+ An array of weights associated with the values in `a`. Each value in
506
+ `a` contributes to the average according to its associated weight.
507
+ The weights array can either be 1-D (in which case its length must be
508
+ the size of `a` along the given axis) or of the same shape as `a`.
509
+ If `weights=None`, then all data in `a` are assumed to have a
510
+ weight equal to one.
511
+ returned : bool, optional
512
+ Default is `False`. If `True`, the tuple (`average`, `sum_of_weights`)
513
+ is returned, otherwise only the average is returned.
514
+ If `weights=None`, `sum_of_weights` is equivalent to the number of
515
+ elements over which the average is taken.
516
+
517
+
518
+ Returns
519
+ -------
520
+ average, [sum_of_weights] : array_type or double
521
+ Return the average along the specified axis. When returned is `True`,
522
+ return a tuple with the average as the first element and the sum
523
+ of the weights as the second element. The return type is `Float`
524
+ if `a` is of integer type, otherwise it is of the same type as `a`.
525
+ `sum_of_weights` is of the same type as `average`.
526
+
527
+ Raises
528
+ ------
529
+ ZeroDivisionError
530
+ When all weights along axis are zero. See `numpy.ma.average` for a
531
+ version robust to this type of error.
532
+ TypeError
533
+ When the length of 1D `weights` is not the same as the shape of `a`
534
+ along axis.
535
+
536
+ See Also
537
+ --------
538
+ mean
539
+
540
+ ma.average : average for masked arrays -- useful if your data contains
541
+ "missing" values
542
+
543
+ Examples
544
+ --------
545
+ >>> data = range(1,5)
546
+ >>> data
547
+ [1, 2, 3, 4]
548
+ >>> np.average(data)
549
+ 2.5
550
+ >>> np.average(range(1,11), weights=range(10,0,-1))
551
+ 4.0
552
+
553
+ >>> data = np.arange(6).reshape((3,2))
554
+ >>> data
555
+ array([[0, 1],
556
+ [2, 3],
557
+ [4, 5]])
558
+ >>> np.average(data, axis=1, weights=[1./4, 3./4])
559
+ array([ 0.75, 2.75, 4.75])
560
+ >>> np.average(data, weights=[1./4, 3./4])
561
+ Traceback (most recent call last):
562
+ ...
563
+ TypeError: Axis must be specified when shapes of a and weights differ.
564
+
565
+ """
566
+ if not isinstance(a, np.matrix):
567
+ a = np.asarray(a)
568
+
569
+ if weights is None:
570
+ avg = a.mean(axis)
571
+ scl = avg.dtype.type(a.size/avg.size)
572
+ else:
573
+ a = a + 0.0
574
+ wgt = np.asarray(weights)
575
+ # Sanity checks
576
+ if a.shape != wgt.shape:
577
+ if axis is None:
578
+ raise TypeError(
579
+ "Axis must be specified when shapes of a and weights "
580
+ "differ.")
581
+ if wgt.ndim != 1:
582
+ raise TypeError(
583
+ "1D weights expected when shapes of a and weights differ.")
584
+ if wgt.shape[0] != a.shape[axis]:
585
+ raise ValueError(
586
+ "Length of weights not compatible with specified axis.")
587
+
588
+ # setup wgt to broadcast along axis
589
+ wgt = np.array(wgt, copy=0, ndmin=a.ndim).swapaxes(-1, axis)
590
+
591
+ scl = wgt.sum(axis=axis, dtype=np.result_type(a.dtype, wgt.dtype))
592
+ if (scl == 0.0).any():
593
+ raise ZeroDivisionError(
594
+ "Weights sum to zero, can't be normalized")
595
+
596
+ avg = np.multiply(a, wgt).sum(axis)/scl
597
+
598
+ if returned:
599
+ scl = np.multiply(avg, 0) + scl
600
+ return avg, scl
601
+ else:
602
+ return avg
603
+
604
+
605
+ def asarray_chkfinite(a, dtype=None, order=None):
606
+ """Convert the input to an array, checking for NaNs or Infs.
607
+
608
+ Parameters
609
+ ----------
610
+ a : array_like
611
+ Input data, in any form that can be converted to an array. This
612
+ includes lists, lists of tuples, tuples, tuples of tuples, tuples
613
+ of lists and ndarrays. Success requires no NaNs or Infs.
614
+ dtype : data-type, optional
615
+ By default, the data-type is inferred from the input data.
616
+ order : {'C', 'F'}, optional
617
+ Whether to use row-major (C-style) or
618
+ column-major (Fortran-style) memory representation.
619
+ Defaults to 'C'.
620
+
621
+ Returns
622
+ -------
623
+ out : ndarray
624
+ Array interpretation of `a`. No copy is performed if the input
625
+ is already an ndarray. If `a` is a subclass of ndarray, a base
626
+ class ndarray is returned.
627
+
628
+ Raises
629
+ ------
630
+ ValueError
631
+ Raises ValueError if `a` contains NaN (Not a Number) or Inf (Infinity).
632
+
633
+ See Also
634
+ --------
635
+ asarray : Create and array.
636
+ asanyarray : Similar function which passes through subclasses.
637
+ ascontiguousarray : Convert input to a contiguous array.
638
+ asfarray : Convert input to a floating point ndarray.
639
+ asfortranarray : Convert input to an ndarray with column-major
640
+ memory order.
641
+ fromiter : Create an array from an iterator.
642
+ fromfunction : Construct an array by executing a function on grid
643
+ positions.
644
+
645
+ Examples
646
+ --------
647
+ Convert a list into an array. If all elements are finite
648
+ ``asarray_chkfinite`` is identical to ``asarray``.
649
+
650
+ >>> a = [1, 2]
651
+ >>> np.asarray_chkfinite(a, dtype=float)
652
+ array([1., 2.])
653
+
654
+ Raises ValueError if array_like contains Nans or Infs.
655
+
656
+ >>> a = [1, 2, np.inf]
657
+ >>> try:
658
+ ... np.asarray_chkfinite(a)
659
+ ... except ValueError:
660
+ ... print 'ValueError'
661
+ ...
662
+ ValueError
663
+
664
+ """
665
+ a = asarray(a, dtype=dtype, order=order)
666
+ if a.dtype.char in typecodes['AllFloat'] and not np.isfinite(a).all():
667
+ raise ValueError(
668
+ "array must not contain infs or NaNs")
669
+ return a
670
+
671
+
672
+ def piecewise(x, condlist, funclist, *args, **kw):
673
+ """
674
+ Evaluate a piecewise-defined function.
675
+
676
+ Given a set of conditions and corresponding functions, evaluate each
677
+ function on the input data wherever its condition is true.
678
+
679
+ Parameters
680
+ ----------
681
+ x : ndarray
682
+ The input domain.
683
+ condlist : list of bool arrays
684
+ Each boolean array corresponds to a function in `funclist`. Wherever
685
+ `condlist[i]` is True, `funclist[i](x)` is used as the output value.
686
+
687
+ Each boolean array in `condlist` selects a piece of `x`,
688
+ and should therefore be of the same shape as `x`.
689
+
690
+ The length of `condlist` must correspond to that of `funclist`.
691
+ If one extra function is given, i.e. if
692
+ ``len(funclist) - len(condlist) == 1``, then that extra function
693
+ is the default value, used wherever all conditions are false.
694
+ funclist : list of callables, f(x,*args,**kw), or scalars
695
+ Each function is evaluated over `x` wherever its corresponding
696
+ condition is True. It should take an array as input and give an array
697
+ or a scalar value as output. If, instead of a callable,
698
+ a scalar is provided then a constant function (``lambda x: scalar``) is
699
+ assumed.
700
+ args : tuple, optional
701
+ Any further arguments given to `piecewise` are passed to the functions
702
+ upon execution, i.e., if called ``piecewise(..., ..., 1, 'a')``, then
703
+ each function is called as ``f(x, 1, 'a')``.
704
+ kw : dict, optional
705
+ Keyword arguments used in calling `piecewise` are passed to the
706
+ functions upon execution, i.e., if called
707
+ ``piecewise(..., ..., lambda=1)``, then each function is called as
708
+ ``f(x, lambda=1)``.
709
+
710
+ Returns
711
+ -------
712
+ out : ndarray
713
+ The output is the same shape and type as x and is found by
714
+ calling the functions in `funclist` on the appropriate portions of `x`,
715
+ as defined by the boolean arrays in `condlist`. Portions not covered
716
+ by any condition have a default value of 0.
717
+
718
+
719
+ See Also
720
+ --------
721
+ choose, select, where
722
+
723
+ Notes
724
+ -----
725
+ This is similar to choose or select, except that functions are
726
+ evaluated on elements of `x` that satisfy the corresponding condition from
727
+ `condlist`.
728
+
729
+ The result is::
730
+
731
+ |--
732
+ |funclist[0](x[condlist[0]])
733
+ out = |funclist[1](x[condlist[1]])
734
+ |...
735
+ |funclist[n2](x[condlist[n2]])
736
+ |--
737
+
738
+ Examples
739
+ --------
740
+ Define the sigma function, which is -1 for ``x < 0`` and +1 for ``x >= 0``.
741
+
742
+ >>> x = np.linspace(-2.5, 2.5, 6)
743
+ >>> np.piecewise(x, [x < 0, x >= 0], [-1, 1])
744
+ array([-1., -1., -1., 1., 1., 1.])
745
+
746
+ Define the absolute value, which is ``-x`` for ``x <0`` and ``x`` for
747
+ ``x >= 0``.
748
+
749
+ >>> np.piecewise(x, [x < 0, x >= 0], [lambda x: -x, lambda x: x])
750
+ array([ 2.5, 1.5, 0.5, 0.5, 1.5, 2.5])
751
+
752
+ """
753
+ x = asanyarray(x)
754
+ n2 = len(funclist)
755
+ if (isscalar(condlist) or not (isinstance(condlist[0], list) or
756
+ isinstance(condlist[0], ndarray))):
757
+ condlist = [condlist]
758
+ condlist = array(condlist, dtype=bool)
759
+ n = len(condlist)
760
+ # This is a hack to work around problems with NumPy's
761
+ # handling of 0-d arrays and boolean indexing with
762
+ # numpy.bool_ scalars
763
+ zerod = False
764
+ if x.ndim == 0:
765
+ x = x[None]
766
+ zerod = True
767
+ if condlist.shape[-1] != 1:
768
+ condlist = condlist.T
769
+ if n == n2 - 1: # compute the "otherwise" condition.
770
+ totlist = np.logical_or.reduce(condlist, axis=0)
771
+ condlist = np.vstack([condlist, ~totlist])
772
+ n += 1
773
+ if (n != n2):
774
+ raise ValueError(
775
+ "function list and condition list must be the same")
776
+
777
+ y = zeros(x.shape, x.dtype)
778
+ for k in range(n):
779
+ item = funclist[k]
780
+ if not isinstance(item, collections.Callable):
781
+ y[condlist[k]] = item
782
+ else:
783
+ vals = x[condlist[k]]
784
+ if vals.size > 0:
785
+ y[condlist[k]] = item(vals, *args, **kw)
786
+ if zerod:
787
+ y = y.squeeze()
788
+ return y
789
+
790
+
791
+ def select(condlist, choicelist, default=0):
792
+ """
793
+ Return an array drawn from elements in choicelist, depending on conditions.
794
+
795
+ Parameters
796
+ ----------
797
+ condlist : list of bool ndarrays
798
+ The list of conditions which determine from which array in `choicelist`
799
+ the output elements are taken. When multiple conditions are satisfied,
800
+ the first one encountered in `condlist` is used.
801
+ choicelist : list of ndarrays
802
+ The list of arrays from which the output elements are taken. It has
803
+ to be of the same length as `condlist`.
804
+ default : scalar, optional
805
+ The element inserted in `output` when all conditions evaluate to False.
806
+
807
+ Returns
808
+ -------
809
+ output : ndarray
810
+ The output at position m is the m-th element of the array in
811
+ `choicelist` where the m-th element of the corresponding array in
812
+ `condlist` is True.
813
+
814
+ See Also
815
+ --------
816
+ where : Return elements from one of two arrays depending on condition.
817
+ take, choose, compress, diag, diagonal
818
+
819
+ Examples
820
+ --------
821
+ >>> x = np.arange(10)
822
+ >>> condlist = [x<3, x>5]
823
+ >>> choicelist = [x, x**2]
824
+ >>> np.select(condlist, choicelist)
825
+ array([ 0, 1, 2, 0, 0, 0, 36, 49, 64, 81])
826
+
827
+ """
828
+ # Check the size of condlist and choicelist are the same, or abort.
829
+ if len(condlist) != len(choicelist):
830
+ raise ValueError(
831
+ 'list of cases must be same length as list of conditions')
832
+
833
+ # Now that the dtype is known, handle the deprecated select([], []) case
834
+ if len(condlist) == 0:
835
+ # 2014-02-24, 1.9
836
+ warnings.warn("select with an empty condition list is not possible"
837
+ "and will be deprecated",
838
+ DeprecationWarning)
839
+ return np.asarray(default)[()]
840
+
841
+ choicelist = [np.asarray(choice) for choice in choicelist]
842
+ choicelist.append(np.asarray(default))
843
+
844
+ # need to get the result type before broadcasting for correct scalar
845
+ # behaviour
846
+ dtype = np.result_type(*choicelist)
847
+
848
+ # Convert conditions to arrays and broadcast conditions and choices
849
+ # as the shape is needed for the result. Doing it seperatly optimizes
850
+ # for example when all choices are scalars.
851
+ condlist = np.broadcast_arrays(*condlist)
852
+ choicelist = np.broadcast_arrays(*choicelist)
853
+
854
+ # If cond array is not an ndarray in boolean format or scalar bool, abort.
855
+ deprecated_ints = False
856
+ for i in range(len(condlist)):
857
+ cond = condlist[i]
858
+ if cond.dtype.type is not np.bool_:
859
+ if np.issubdtype(cond.dtype, np.integer):
860
+ # A previous implementation accepted int ndarrays accidentally.
861
+ # Supported here deliberately, but deprecated.
862
+ condlist[i] = condlist[i].astype(bool)
863
+ deprecated_ints = True
864
+ else:
865
+ raise ValueError(
866
+ 'invalid entry in choicelist: should be boolean ndarray')
867
+
868
+ if deprecated_ints:
869
+ # 2014-02-24, 1.9
870
+ msg = "select condlists containing integer ndarrays is deprecated " \
871
+ "and will be removed in the future. Use `.astype(bool)` to " \
872
+ "convert to bools."
873
+ warnings.warn(msg, DeprecationWarning)
874
+
875
+ if choicelist[0].ndim == 0:
876
+ # This may be common, so avoid the call.
877
+ result_shape = condlist[0].shape
878
+ else:
879
+ result_shape = np.broadcast_arrays(condlist[0], choicelist[0])[0].shape
880
+
881
+ result = np.full(result_shape, choicelist[-1], dtype)
882
+
883
+ # Use np.copyto to burn each choicelist array onto result, using the
884
+ # corresponding condlist as a boolean mask. This is done in reverse
885
+ # order since the first choice should take precedence.
886
+ choicelist = choicelist[-2::-1]
887
+ condlist = condlist[::-1]
888
+ for choice, cond in zip(choicelist, condlist):
889
+ np.copyto(result, choice, where=cond)
890
+
891
+ return result
892
+
893
+
894
+ def copy(a, order='K'):
895
+ """
896
+ Return an array copy of the given object.
897
+
898
+ Parameters
899
+ ----------
900
+ a : array_like
901
+ Input data.
902
+ order : {'C', 'F', 'A', 'K'}, optional
903
+ Controls the memory layout of the copy. 'C' means C-order,
904
+ 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
905
+ 'C' otherwise. 'K' means match the layout of `a` as closely
906
+ as possible. (Note that this function and :meth:ndarray.copy are very
907
+ similar, but have different default values for their order=
908
+ arguments.)
909
+
910
+ Returns
911
+ -------
912
+ arr : ndarray
913
+ Array interpretation of `a`.
914
+
915
+ Notes
916
+ -----
917
+ This is equivalent to
918
+
919
+ >>> np.array(a, copy=True) #doctest: +SKIP
920
+
921
+ Examples
922
+ --------
923
+ Create an array x, with a reference y and a copy z:
924
+
925
+ >>> x = np.array([1, 2, 3])
926
+ >>> y = x
927
+ >>> z = np.copy(x)
928
+
929
+ Note that, when we modify x, y changes, but not z:
930
+
931
+ >>> x[0] = 10
932
+ >>> x[0] == y[0]
933
+ True
934
+ >>> x[0] == z[0]
935
+ False
936
+
937
+ """
938
+ return array(a, order=order, copy=True)
939
+
940
+ # Basic operations
941
+
942
+
943
+ def gradient(f, *varargs, **kwargs):
944
+ """
945
+ Return the gradient of an N-dimensional array.
946
+
947
+ The gradient is computed using second order accurate central differences
948
+ in the interior and either first differences or second order accurate
949
+ one-sides (forward or backwards) differences at the boundaries. The
950
+ returned gradient hence has the same shape as the input array.
951
+
952
+ Parameters
953
+ ----------
954
+ f : array_like
955
+ An N-dimensional array containing samples of a scalar function.
956
+ varargs : list of scalar, optional
957
+ N scalars specifying the sample distances for each dimension,
958
+ i.e. `dx`, `dy`, `dz`, ... Default distance: 1.
959
+ edge_order : {1, 2}, optional
960
+ Gradient is calculated using N\ :sup:`th` order accurate differences
961
+ at the boundaries. Default: 1.
962
+
963
+ .. versionadded:: 1.9.1
964
+
965
+ Returns
966
+ -------
967
+ gradient : list of ndarray
968
+ Each element of `list` has the same shape as `f` giving the derivative
969
+ of `f` with respect to each dimension.
970
+
971
+ Examples
972
+ --------
973
+ >>> x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
974
+ >>> np.gradient(x)
975
+ array([ 1. , 1.5, 2.5, 3.5, 4.5, 5. ])
976
+ >>> np.gradient(x, 2)
977
+ array([ 0.5 , 0.75, 1.25, 1.75, 2.25, 2.5 ])
978
+
979
+ For two dimensional arrays, the return will be two arrays ordered by
980
+ axis. In this example the first array stands for the gradient in
981
+ rows and the second one in columns direction:
982
+
983
+ >>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float))
984
+ [array([[ 2., 2., -1.],
985
+ [ 2., 2., -1.]]), array([[ 1. , 2.5, 4. ],
986
+ [ 1. , 1. , 1. ]])]
987
+
988
+ >>> x = np.array([0, 1, 2, 3, 4])
989
+ >>> dx = np.gradient(x)
990
+ >>> y = x**2
991
+ >>> np.gradient(y, dx, edge_order=2)
992
+ array([-0., 2., 4., 6., 8.])
993
+ """
994
+ f = np.asanyarray(f)
995
+ N = len(f.shape) # number of dimensions
996
+ n = len(varargs)
997
+ if n == 0:
998
+ dx = [1.0]*N
999
+ elif n == 1:
1000
+ dx = [varargs[0]]*N
1001
+ elif n == N:
1002
+ dx = list(varargs)
1003
+ else:
1004
+ raise SyntaxError(
1005
+ "invalid number of arguments")
1006
+
1007
+ edge_order = kwargs.pop('edge_order', 1)
1008
+ if kwargs:
1009
+ raise TypeError('"{}" are not valid keyword arguments.'.format(
1010
+ '", "'.join(kwargs.keys())))
1011
+ if edge_order > 2:
1012
+ raise ValueError("'edge_order' greater than 2 not supported")
1013
+
1014
+ # use central differences on interior and one-sided differences on the
1015
+ # endpoints. This preserves second order-accuracy over the full domain.
1016
+
1017
+ outvals = []
1018
+
1019
+ # create slice objects --- initially all are [:, :, ..., :]
1020
+ slice1 = [slice(None)]*N
1021
+ slice2 = [slice(None)]*N
1022
+ slice3 = [slice(None)]*N
1023
+ slice4 = [slice(None)]*N
1024
+
1025
+ otype = f.dtype.char
1026
+ if otype not in ['f', 'd', 'F', 'D', 'm', 'M']:
1027
+ otype = 'd'
1028
+
1029
+ # Difference of datetime64 elements results in timedelta64
1030
+ if otype == 'M':
1031
+ # Need to use the full dtype name because it contains unit information
1032
+ otype = f.dtype.name.replace('datetime', 'timedelta')
1033
+ elif otype == 'm':
1034
+ # Needs to keep the specific units, can't be a general unit
1035
+ otype = f.dtype
1036
+
1037
+ # Convert datetime64 data into ints. Make dummy variable `y`
1038
+ # that is a view of ints if the data is datetime64, otherwise
1039
+ # just set y equal to the the array `f`.
1040
+ if f.dtype.char in ["M", "m"]:
1041
+ y = f.view('int64')
1042
+ else:
1043
+ y = f
1044
+
1045
+ for axis in range(N):
1046
+
1047
+ if y.shape[axis] < 2:
1048
+ raise ValueError(
1049
+ "Shape of array too small to calculate a numerical gradient, "
1050
+ "at least two elements are required.")
1051
+
1052
+ # Numerical differentiation: 1st order edges, 2nd order interior
1053
+ if y.shape[axis] == 2 or edge_order == 1:
1054
+ # Use first order differences for time data
1055
+ out = np.empty_like(y, dtype=otype)
1056
+
1057
+ slice1[axis] = slice(1, -1)
1058
+ slice2[axis] = slice(2, None)
1059
+ slice3[axis] = slice(None, -2)
1060
+ # 1D equivalent -- out[1:-1] = (y[2:] - y[:-2])/2.0
1061
+ out[slice1] = (y[slice2] - y[slice3])/2.0
1062
+
1063
+ slice1[axis] = 0
1064
+ slice2[axis] = 1
1065
+ slice3[axis] = 0
1066
+ # 1D equivalent -- out[0] = (y[1] - y[0])
1067
+ out[slice1] = (y[slice2] - y[slice3])
1068
+
1069
+ slice1[axis] = -1
1070
+ slice2[axis] = -1
1071
+ slice3[axis] = -2
1072
+ # 1D equivalent -- out[-1] = (y[-1] - y[-2])
1073
+ out[slice1] = (y[slice2] - y[slice3])
1074
+
1075
+ # Numerical differentiation: 2st order edges, 2nd order interior
1076
+ else:
1077
+ # Use second order differences where possible
1078
+ out = np.empty_like(y, dtype=otype)
1079
+
1080
+ slice1[axis] = slice(1, -1)
1081
+ slice2[axis] = slice(2, None)
1082
+ slice3[axis] = slice(None, -2)
1083
+ # 1D equivalent -- out[1:-1] = (y[2:] - y[:-2])/2.0
1084
+ out[slice1] = (y[slice2] - y[slice3])/2.0
1085
+
1086
+ slice1[axis] = 0
1087
+ slice2[axis] = 0
1088
+ slice3[axis] = 1
1089
+ slice4[axis] = 2
1090
+ # 1D equivalent -- out[0] = -(3*y[0] - 4*y[1] + y[2]) / 2.0
1091
+ out[slice1] = -(3.0*y[slice2] - 4.0*y[slice3] + y[slice4])/2.0
1092
+
1093
+ slice1[axis] = -1
1094
+ slice2[axis] = -1
1095
+ slice3[axis] = -2
1096
+ slice4[axis] = -3
1097
+ # 1D equivalent -- out[-1] = (3*y[-1] - 4*y[-2] + y[-3])
1098
+ out[slice1] = (3.0*y[slice2] - 4.0*y[slice3] + y[slice4])/2.0
1099
+
1100
+ # divide by step size
1101
+ out /= dx[axis]
1102
+ outvals.append(out)
1103
+
1104
+ # reset the slice object in this dimension to ":"
1105
+ slice1[axis] = slice(None)
1106
+ slice2[axis] = slice(None)
1107
+ slice3[axis] = slice(None)
1108
+ slice4[axis] = slice(None)
1109
+
1110
+ if N == 1:
1111
+ return outvals[0]
1112
+ else:
1113
+ return outvals
1114
+
1115
+
1116
+ def diff(a, n=1, axis=-1):
1117
+ """
1118
+ Calculate the n-th order discrete difference along given axis.
1119
+
1120
+ The first order difference is given by ``out[n] = a[n+1] - a[n]`` along
1121
+ the given axis, higher order differences are calculated by using `diff`
1122
+ recursively.
1123
+
1124
+ Parameters
1125
+ ----------
1126
+ a : array_like
1127
+ Input array
1128
+ n : int, optional
1129
+ The number of times values are differenced.
1130
+ axis : int, optional
1131
+ The axis along which the difference is taken, default is the last axis.
1132
+
1133
+ Returns
1134
+ -------
1135
+ diff : ndarray
1136
+ The `n` order differences. The shape of the output is the same as `a`
1137
+ except along `axis` where the dimension is smaller by `n`.
1138
+
1139
+ See Also
1140
+ --------
1141
+ gradient, ediff1d, cumsum
1142
+
1143
+ Examples
1144
+ --------
1145
+ >>> x = np.array([1, 2, 4, 7, 0])
1146
+ >>> np.diff(x)
1147
+ array([ 1, 2, 3, -7])
1148
+ >>> np.diff(x, n=2)
1149
+ array([ 1, 1, -10])
1150
+
1151
+ >>> x = np.array([[1, 3, 6, 10], [0, 5, 6, 8]])
1152
+ >>> np.diff(x)
1153
+ array([[2, 3, 4],
1154
+ [5, 1, 2]])
1155
+ >>> np.diff(x, axis=0)
1156
+ array([[-1, 2, 0, -2]])
1157
+
1158
+ """
1159
+ if n == 0:
1160
+ return a
1161
+ if n < 0:
1162
+ raise ValueError(
1163
+ "order must be non-negative but got " + repr(n))
1164
+ a = asanyarray(a)
1165
+ nd = len(a.shape)
1166
+ slice1 = [slice(None)]*nd
1167
+ slice2 = [slice(None)]*nd
1168
+ slice1[axis] = slice(1, None)
1169
+ slice2[axis] = slice(None, -1)
1170
+ slice1 = tuple(slice1)
1171
+ slice2 = tuple(slice2)
1172
+ if n > 1:
1173
+ return diff(a[slice1]-a[slice2], n-1, axis=axis)
1174
+ else:
1175
+ return a[slice1]-a[slice2]
1176
+
1177
+
1178
+ def interp(x, xp, fp, left=None, right=None, period=None):
1179
+ """
1180
+ One-dimensional linear interpolation.
1181
+
1182
+ Returns the one-dimensional piecewise linear interpolant to a function
1183
+ with given values at discrete data-points.
1184
+
1185
+ Parameters
1186
+ ----------
1187
+ x : array_like
1188
+ The x-coordinates of the interpolated values.
1189
+
1190
+ xp : 1-D sequence of floats
1191
+ The x-coordinates of the data points, must be increasing if argument
1192
+ `period` is not specified. Otherwise, `xp` is internally sorted after
1193
+ normalizing the periodic boundaries with ``xp = xp % period``.
1194
+
1195
+ fp : 1-D sequence of floats
1196
+ The y-coordinates of the data points, same length as `xp`.
1197
+
1198
+ left : float, optional
1199
+ Value to return for `x < xp[0]`, default is `fp[0]`.
1200
+
1201
+ right : float, optional
1202
+ Value to return for `x > xp[-1]`, default is `fp[-1]`.
1203
+
1204
+ period : None or float, optional
1205
+ A period for the x-coordinates. This parameter allows the proper
1206
+ interpolation of angular x-coordinates. Parameters `left` and `right`
1207
+ are ignored if `period` is specified.
1208
+
1209
+ .. versionadded:: 1.10.0
1210
+
1211
+ Returns
1212
+ -------
1213
+ y : float or ndarray
1214
+ The interpolated values, same shape as `x`.
1215
+
1216
+ Raises
1217
+ ------
1218
+ ValueError
1219
+ If `xp` and `fp` have different length
1220
+ If `xp` or `fp` are not 1-D sequences
1221
+ If `period == 0`
1222
+
1223
+ Notes
1224
+ -----
1225
+ Does not check that the x-coordinate sequence `xp` is increasing.
1226
+ If `xp` is not increasing, the results are nonsense.
1227
+ A simple check for increasing is::
1228
+
1229
+ np.all(np.diff(xp) > 0)
1230
+
1231
+ Examples
1232
+ --------
1233
+ >>> xp = [1, 2, 3]
1234
+ >>> fp = [3, 2, 0]
1235
+ >>> np.interp(2.5, xp, fp)
1236
+ 1.0
1237
+ >>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp)
1238
+ array([ 3. , 3. , 2.5 , 0.56, 0. ])
1239
+ >>> UNDEF = -99.0
1240
+ >>> np.interp(3.14, xp, fp, right=UNDEF)
1241
+ -99.0
1242
+
1243
+ Plot an interpolant to the sine function:
1244
+
1245
+ >>> x = np.linspace(0, 2*np.pi, 10)
1246
+ >>> y = np.sin(x)
1247
+ >>> xvals = np.linspace(0, 2*np.pi, 50)
1248
+ >>> yinterp = np.interp(xvals, x, y)
1249
+ >>> import matplotlib.pyplot as plt
1250
+ >>> plt.plot(x, y, 'o')
1251
+ [<matplotlib.lines.Line2D object at 0x...>]
1252
+ >>> plt.plot(xvals, yinterp, '-x')
1253
+ [<matplotlib.lines.Line2D object at 0x...>]
1254
+ >>> plt.show()
1255
+
1256
+ Interpolation with periodic x-coordinates:
1257
+
1258
+ >>> x = [-180, -170, -185, 185, -10, -5, 0, 365]
1259
+ >>> xp = [190, -190, 350, -350]
1260
+ >>> fp = [5, 10, 3, 4]
1261
+ >>> np.interp(x, xp, fp, period=360)
1262
+ array([7.5, 5., 8.75, 6.25, 3., 3.25, 3.5, 3.75])
1263
+
1264
+ """
1265
+ if period is None:
1266
+ if isinstance(x, (float, int, number)):
1267
+ return compiled_interp([x], xp, fp, left, right).item()
1268
+ elif isinstance(x, np.ndarray) and x.ndim == 0:
1269
+ return compiled_interp([x], xp, fp, left, right).item()
1270
+ else:
1271
+ return compiled_interp(x, xp, fp, left, right)
1272
+ else:
1273
+ if period == 0:
1274
+ raise ValueError("period must be a non-zero value")
1275
+ period = abs(period)
1276
+ left = None
1277
+ right = None
1278
+ return_array = True
1279
+ if isinstance(x, (float, int, number)):
1280
+ return_array = False
1281
+ x = [x]
1282
+ x = np.asarray(x, dtype=np.float64)
1283
+ xp = np.asarray(xp, dtype=np.float64)
1284
+ fp = np.asarray(fp, dtype=np.float64)
1285
+ if xp.ndim != 1 or fp.ndim != 1:
1286
+ raise ValueError("Data points must be 1-D sequences")
1287
+ if xp.shape[0] != fp.shape[0]:
1288
+ raise ValueError("fp and xp are not of the same length")
1289
+ # normalizing periodic boundaries
1290
+ x = x % period
1291
+ xp = xp % period
1292
+ asort_xp = np.argsort(xp)
1293
+ xp = xp[asort_xp]
1294
+ fp = fp[asort_xp]
1295
+ xp = np.concatenate((xp[-1:]-period, xp, xp[0:1]+period))
1296
+ fp = np.concatenate((fp[-1:], fp, fp[0:1]))
1297
+ if return_array:
1298
+ return compiled_interp(x, xp, fp, left, right)
1299
+ else:
1300
+ return compiled_interp(x, xp, fp, left, right).item()
1301
+
1302
+
1303
+ def angle(z, deg=0):
1304
+ """
1305
+ Return the angle of the complex argument.
1306
+
1307
+ Parameters
1308
+ ----------
1309
+ z : array_like
1310
+ A complex number or sequence of complex numbers.
1311
+ deg : bool, optional
1312
+ Return angle in degrees if True, radians if False (default).
1313
+
1314
+ Returns
1315
+ -------
1316
+ angle : ndarray or scalar
1317
+ The counterclockwise angle from the positive real axis on
1318
+ the complex plane, with dtype as numpy.float64.
1319
+
1320
+ See Also
1321
+ --------
1322
+ arctan2
1323
+ absolute
1324
+
1325
+
1326
+
1327
+ Examples
1328
+ --------
1329
+ >>> np.angle([1.0, 1.0j, 1+1j]) # in radians
1330
+ array([ 0. , 1.57079633, 0.78539816])
1331
+ >>> np.angle(1+1j, deg=True) # in degrees
1332
+ 45.0
1333
+
1334
+ """
1335
+ if deg:
1336
+ fact = 180/pi
1337
+ else:
1338
+ fact = 1.0
1339
+ z = asarray(z)
1340
+ if (issubclass(z.dtype.type, _nx.complexfloating)):
1341
+ zimag = z.imag
1342
+ zreal = z.real
1343
+ else:
1344
+ zimag = 0
1345
+ zreal = z
1346
+ return arctan2(zimag, zreal) * fact
1347
+
1348
+
1349
+ def unwrap(p, discont=pi, axis=-1):
1350
+ """
1351
+ Unwrap by changing deltas between values to 2*pi complement.
1352
+
1353
+ Unwrap radian phase `p` by changing absolute jumps greater than
1354
+ `discont` to their 2*pi complement along the given axis.
1355
+
1356
+ Parameters
1357
+ ----------
1358
+ p : array_like
1359
+ Input array.
1360
+ discont : float, optional
1361
+ Maximum discontinuity between values, default is ``pi``.
1362
+ axis : int, optional
1363
+ Axis along which unwrap will operate, default is the last axis.
1364
+
1365
+ Returns
1366
+ -------
1367
+ out : ndarray
1368
+ Output array.
1369
+
1370
+ See Also
1371
+ --------
1372
+ rad2deg, deg2rad
1373
+
1374
+ Notes
1375
+ -----
1376
+ If the discontinuity in `p` is smaller than ``pi``, but larger than
1377
+ `discont`, no unwrapping is done because taking the 2*pi complement
1378
+ would only make the discontinuity larger.
1379
+
1380
+ Examples
1381
+ --------
1382
+ >>> phase = np.linspace(0, np.pi, num=5)
1383
+ >>> phase[3:] += np.pi
1384
+ >>> phase
1385
+ array([ 0. , 0.78539816, 1.57079633, 5.49778714, 6.28318531])
1386
+ >>> np.unwrap(phase)
1387
+ array([ 0. , 0.78539816, 1.57079633, -0.78539816, 0. ])
1388
+
1389
+ """
1390
+ p = asarray(p)
1391
+ nd = len(p.shape)
1392
+ dd = diff(p, axis=axis)
1393
+ slice1 = [slice(None, None)]*nd # full slices
1394
+ slice1[axis] = slice(1, None)
1395
+ ddmod = mod(dd + pi, 2*pi) - pi
1396
+ _nx.copyto(ddmod, pi, where=(ddmod == -pi) & (dd > 0))
1397
+ ph_correct = ddmod - dd
1398
+ _nx.copyto(ph_correct, 0, where=abs(dd) < discont)
1399
+ up = array(p, copy=True, dtype='d')
1400
+ up[slice1] = p[slice1] + ph_correct.cumsum(axis)
1401
+ return up
1402
+
1403
+
1404
+ def sort_complex(a):
1405
+ """
1406
+ Sort a complex array using the real part first, then the imaginary part.
1407
+
1408
+ Parameters
1409
+ ----------
1410
+ a : array_like
1411
+ Input array
1412
+
1413
+ Returns
1414
+ -------
1415
+ out : complex ndarray
1416
+ Always returns a sorted complex array.
1417
+
1418
+ Examples
1419
+ --------
1420
+ >>> np.sort_complex([5, 3, 6, 2, 1])
1421
+ array([ 1.+0.j, 2.+0.j, 3.+0.j, 5.+0.j, 6.+0.j])
1422
+
1423
+ >>> np.sort_complex([1 + 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 + 5j])
1424
+ array([ 1.+2.j, 2.-1.j, 3.-3.j, 3.-2.j, 3.+5.j])
1425
+
1426
+ """
1427
+ b = array(a, copy=True)
1428
+ b.sort()
1429
+ if not issubclass(b.dtype.type, _nx.complexfloating):
1430
+ if b.dtype.char in 'bhBH':
1431
+ return b.astype('F')
1432
+ elif b.dtype.char == 'g':
1433
+ return b.astype('G')
1434
+ else:
1435
+ return b.astype('D')
1436
+ else:
1437
+ return b
1438
+
1439
+
1440
+ def trim_zeros(filt, trim='fb'):
1441
+ """
1442
+ Trim the leading and/or trailing zeros from a 1-D array or sequence.
1443
+
1444
+ Parameters
1445
+ ----------
1446
+ filt : 1-D array or sequence
1447
+ Input array.
1448
+ trim : str, optional
1449
+ A string with 'f' representing trim from front and 'b' to trim from
1450
+ back. Default is 'fb', trim zeros from both front and back of the
1451
+ array.
1452
+
1453
+ Returns
1454
+ -------
1455
+ trimmed : 1-D array or sequence
1456
+ The result of trimming the input. The input data type is preserved.
1457
+
1458
+ Examples
1459
+ --------
1460
+ >>> a = np.array((0, 0, 0, 1, 2, 3, 0, 2, 1, 0))
1461
+ >>> np.trim_zeros(a)
1462
+ array([1, 2, 3, 0, 2, 1])
1463
+
1464
+ >>> np.trim_zeros(a, 'b')
1465
+ array([0, 0, 0, 1, 2, 3, 0, 2, 1])
1466
+
1467
+ The input data type is preserved, list/tuple in means list/tuple out.
1468
+
1469
+ >>> np.trim_zeros([0, 1, 2, 0])
1470
+ [1, 2]
1471
+
1472
+ """
1473
+ first = 0
1474
+ trim = trim.upper()
1475
+ if 'F' in trim:
1476
+ for i in filt:
1477
+ if i != 0.:
1478
+ break
1479
+ else:
1480
+ first = first + 1
1481
+ last = len(filt)
1482
+ if 'B' in trim:
1483
+ for i in filt[::-1]:
1484
+ if i != 0.:
1485
+ break
1486
+ else:
1487
+ last = last - 1
1488
+ return filt[first:last]
1489
+
1490
+
1491
+ @deprecate
1492
+ def unique(x):
1493
+ """
1494
+ This function is deprecated. Use numpy.lib.arraysetops.unique()
1495
+ instead.
1496
+ """
1497
+ try:
1498
+ tmp = x.flatten()
1499
+ if tmp.size == 0:
1500
+ return tmp
1501
+ tmp.sort()
1502
+ idx = concatenate(([True], tmp[1:] != tmp[:-1]))
1503
+ return tmp[idx]
1504
+ except AttributeError:
1505
+ items = sorted(set(x))
1506
+ return asarray(items)
1507
+
1508
+
1509
+ def extract(condition, arr):
1510
+ """
1511
+ Return the elements of an array that satisfy some condition.
1512
+
1513
+ This is equivalent to ``np.compress(ravel(condition), ravel(arr))``. If
1514
+ `condition` is boolean ``np.extract`` is equivalent to ``arr[condition]``.
1515
+
1516
+ Note that `place` does the exact opposite of `extract`.
1517
+
1518
+ Parameters
1519
+ ----------
1520
+ condition : array_like
1521
+ An array whose nonzero or True entries indicate the elements of `arr`
1522
+ to extract.
1523
+ arr : array_like
1524
+ Input array of the same size as `condition`.
1525
+
1526
+ Returns
1527
+ -------
1528
+ extract : ndarray
1529
+ Rank 1 array of values from `arr` where `condition` is True.
1530
+
1531
+ See Also
1532
+ --------
1533
+ take, put, copyto, compress, place
1534
+
1535
+ Examples
1536
+ --------
1537
+ >>> arr = np.arange(12).reshape((3, 4))
1538
+ >>> arr
1539
+ array([[ 0, 1, 2, 3],
1540
+ [ 4, 5, 6, 7],
1541
+ [ 8, 9, 10, 11]])
1542
+ >>> condition = np.mod(arr, 3)==0
1543
+ >>> condition
1544
+ array([[ True, False, False, True],
1545
+ [False, False, True, False],
1546
+ [False, True, False, False]], dtype=bool)
1547
+ >>> np.extract(condition, arr)
1548
+ array([0, 3, 6, 9])
1549
+
1550
+
1551
+ If `condition` is boolean:
1552
+
1553
+ >>> arr[condition]
1554
+ array([0, 3, 6, 9])
1555
+
1556
+ """
1557
+ return _nx.take(ravel(arr), nonzero(ravel(condition))[0])
1558
+
1559
+
1560
+ def place(arr, mask, vals):
1561
+ """
1562
+ Change elements of an array based on conditional and input values.
1563
+
1564
+ Similar to ``np.copyto(arr, vals, where=mask)``, the difference is that
1565
+ `place` uses the first N elements of `vals`, where N is the number of
1566
+ True values in `mask`, while `copyto` uses the elements where `mask`
1567
+ is True.
1568
+
1569
+ Note that `extract` does the exact opposite of `place`.
1570
+
1571
+ Parameters
1572
+ ----------
1573
+ arr : array_like
1574
+ Array to put data into.
1575
+ mask : array_like
1576
+ Boolean mask array. Must have the same size as `a`.
1577
+ vals : 1-D sequence
1578
+ Values to put into `a`. Only the first N elements are used, where
1579
+ N is the number of True values in `mask`. If `vals` is smaller
1580
+ than N it will be repeated.
1581
+
1582
+ See Also
1583
+ --------
1584
+ copyto, put, take, extract
1585
+
1586
+ Examples
1587
+ --------
1588
+ >>> arr = np.arange(6).reshape(2, 3)
1589
+ >>> np.place(arr, arr>2, [44, 55])
1590
+ >>> arr
1591
+ array([[ 0, 1, 2],
1592
+ [44, 55, 44]])
1593
+
1594
+ """
1595
+ return _insert(arr, mask, vals)
1596
+
1597
+
1598
+ def disp(mesg, device=None, linefeed=True):
1599
+ """
1600
+ Display a message on a device.
1601
+
1602
+ Parameters
1603
+ ----------
1604
+ mesg : str
1605
+ Message to display.
1606
+ device : object
1607
+ Device to write message. If None, defaults to ``sys.stdout`` which is
1608
+ very similar to ``print``. `device` needs to have ``write()`` and
1609
+ ``flush()`` methods.
1610
+ linefeed : bool, optional
1611
+ Option whether to print a line feed or not. Defaults to True.
1612
+
1613
+ Raises
1614
+ ------
1615
+ AttributeError
1616
+ If `device` does not have a ``write()`` or ``flush()`` method.
1617
+
1618
+ Examples
1619
+ --------
1620
+ Besides ``sys.stdout``, a file-like object can also be used as it has
1621
+ both required methods:
1622
+
1623
+ >>> from StringIO import StringIO
1624
+ >>> buf = StringIO()
1625
+ >>> np.disp('"Display" in a file', device=buf)
1626
+ >>> buf.getvalue()
1627
+ '"Display" in a file\\n'
1628
+
1629
+ """
1630
+ if device is None:
1631
+ device = sys.stdout
1632
+ if linefeed:
1633
+ device.write('%s\n' % mesg)
1634
+ else:
1635
+ device.write('%s' % mesg)
1636
+ device.flush()
1637
+ return
1638
+
1639
+
1640
+ class vectorize(object):
1641
+ """
1642
+ vectorize(pyfunc, otypes='', doc=None, excluded=None, cache=False)
1643
+
1644
+ Generalized function class.
1645
+
1646
+ Define a vectorized function which takes a nested sequence
1647
+ of objects or numpy arrays as inputs and returns a
1648
+ numpy array as output. The vectorized function evaluates `pyfunc` over
1649
+ successive tuples of the input arrays like the python map function,
1650
+ except it uses the broadcasting rules of numpy.
1651
+
1652
+ The data type of the output of `vectorized` is determined by calling
1653
+ the function with the first element of the input. This can be avoided
1654
+ by specifying the `otypes` argument.
1655
+
1656
+ Parameters
1657
+ ----------
1658
+ pyfunc : callable
1659
+ A python function or method.
1660
+ otypes : str or list of dtypes, optional
1661
+ The output data type. It must be specified as either a string of
1662
+ typecode characters or a list of data type specifiers. There should
1663
+ be one data type specifier for each output.
1664
+ doc : str, optional
1665
+ The docstring for the function. If `None`, the docstring will be the
1666
+ ``pyfunc.__doc__``.
1667
+ excluded : set, optional
1668
+ Set of strings or integers representing the positional or keyword
1669
+ arguments for which the function will not be vectorized. These will be
1670
+ passed directly to `pyfunc` unmodified.
1671
+
1672
+ .. versionadded:: 1.7.0
1673
+
1674
+ cache : bool, optional
1675
+ If `True`, then cache the first function call that determines the number
1676
+ of outputs if `otypes` is not provided.
1677
+
1678
+ .. versionadded:: 1.7.0
1679
+
1680
+ Returns
1681
+ -------
1682
+ vectorized : callable
1683
+ Vectorized function.
1684
+
1685
+ Examples
1686
+ --------
1687
+ >>> def myfunc(a, b):
1688
+ ... "Return a-b if a>b, otherwise return a+b"
1689
+ ... if a > b:
1690
+ ... return a - b
1691
+ ... else:
1692
+ ... return a + b
1693
+
1694
+ >>> vfunc = np.vectorize(myfunc)
1695
+ >>> vfunc([1, 2, 3, 4], 2)
1696
+ array([3, 4, 1, 2])
1697
+
1698
+ The docstring is taken from the input function to `vectorize` unless it
1699
+ is specified
1700
+
1701
+ >>> vfunc.__doc__
1702
+ 'Return a-b if a>b, otherwise return a+b'
1703
+ >>> vfunc = np.vectorize(myfunc, doc='Vectorized `myfunc`')
1704
+ >>> vfunc.__doc__
1705
+ 'Vectorized `myfunc`'
1706
+
1707
+ The output type is determined by evaluating the first element of the input,
1708
+ unless it is specified
1709
+
1710
+ >>> out = vfunc([1, 2, 3, 4], 2)
1711
+ >>> type(out[0])
1712
+ <type 'numpy.int32'>
1713
+ >>> vfunc = np.vectorize(myfunc, otypes=[np.float])
1714
+ >>> out = vfunc([1, 2, 3, 4], 2)
1715
+ >>> type(out[0])
1716
+ <type 'numpy.float64'>
1717
+
1718
+ The `excluded` argument can be used to prevent vectorizing over certain
1719
+ arguments. This can be useful for array-like arguments of a fixed length
1720
+ such as the coefficients for a polynomial as in `polyval`:
1721
+
1722
+ >>> def mypolyval(p, x):
1723
+ ... _p = list(p)
1724
+ ... res = _p.pop(0)
1725
+ ... while _p:
1726
+ ... res = res*x + _p.pop(0)
1727
+ ... return res
1728
+ >>> vpolyval = np.vectorize(mypolyval, excluded=['p'])
1729
+ >>> vpolyval(p=[1, 2, 3], x=[0, 1])
1730
+ array([3, 6])
1731
+
1732
+ Positional arguments may also be excluded by specifying their position:
1733
+
1734
+ >>> vpolyval.excluded.add(0)
1735
+ >>> vpolyval([1, 2, 3], x=[0, 1])
1736
+ array([3, 6])
1737
+
1738
+ Notes
1739
+ -----
1740
+ The `vectorize` function is provided primarily for convenience, not for
1741
+ performance. The implementation is essentially a for loop.
1742
+
1743
+ If `otypes` is not specified, then a call to the function with the
1744
+ first argument will be used to determine the number of outputs. The
1745
+ results of this call will be cached if `cache` is `True` to prevent
1746
+ calling the function twice. However, to implement the cache, the
1747
+ original function must be wrapped which will slow down subsequent
1748
+ calls, so only do this if your function is expensive.
1749
+
1750
+ The new keyword argument interface and `excluded` argument support
1751
+ further degrades performance.
1752
+
1753
+ """
1754
+
1755
+ def __init__(self, pyfunc, otypes='', doc=None, excluded=None,
1756
+ cache=False):
1757
+ self.pyfunc = pyfunc
1758
+ self.cache = cache
1759
+ self._ufunc = None # Caching to improve default performance
1760
+
1761
+ if doc is None:
1762
+ self.__doc__ = pyfunc.__doc__
1763
+ else:
1764
+ self.__doc__ = doc
1765
+
1766
+ if isinstance(otypes, str):
1767
+ self.otypes = otypes
1768
+ for char in self.otypes:
1769
+ if char not in typecodes['All']:
1770
+ raise ValueError(
1771
+ "Invalid otype specified: %s" % (char,))
1772
+ elif iterable(otypes):
1773
+ self.otypes = ''.join([_nx.dtype(x).char for x in otypes])
1774
+ else:
1775
+ raise ValueError(
1776
+ "Invalid otype specification")
1777
+
1778
+ # Excluded variable support
1779
+ if excluded is None:
1780
+ excluded = set()
1781
+ self.excluded = set(excluded)
1782
+
1783
+ def __call__(self, *args, **kwargs):
1784
+ """
1785
+ Return arrays with the results of `pyfunc` broadcast (vectorized) over
1786
+ `args` and `kwargs` not in `excluded`.
1787
+ """
1788
+ excluded = self.excluded
1789
+ if not kwargs and not excluded:
1790
+ func = self.pyfunc
1791
+ vargs = args
1792
+ else:
1793
+ # The wrapper accepts only positional arguments: we use `names` and
1794
+ # `inds` to mutate `the_args` and `kwargs` to pass to the original
1795
+ # function.
1796
+ nargs = len(args)
1797
+
1798
+ names = [_n for _n in kwargs if _n not in excluded]
1799
+ inds = [_i for _i in range(nargs) if _i not in excluded]
1800
+ the_args = list(args)
1801
+
1802
+ def func(*vargs):
1803
+ for _n, _i in enumerate(inds):
1804
+ the_args[_i] = vargs[_n]
1805
+ kwargs.update(zip(names, vargs[len(inds):]))
1806
+ return self.pyfunc(*the_args, **kwargs)
1807
+
1808
+ vargs = [args[_i] for _i in inds]
1809
+ vargs.extend([kwargs[_n] for _n in names])
1810
+
1811
+ return self._vectorize_call(func=func, args=vargs)
1812
+
1813
+ def _get_ufunc_and_otypes(self, func, args):
1814
+ """Return (ufunc, otypes)."""
1815
+ # frompyfunc will fail if args is empty
1816
+ if not args:
1817
+ raise ValueError('args can not be empty')
1818
+
1819
+ if self.otypes:
1820
+ otypes = self.otypes
1821
+ nout = len(otypes)
1822
+
1823
+ # Note logic here: We only *use* self._ufunc if func is self.pyfunc
1824
+ # even though we set self._ufunc regardless.
1825
+ if func is self.pyfunc and self._ufunc is not None:
1826
+ ufunc = self._ufunc
1827
+ else:
1828
+ ufunc = self._ufunc = frompyfunc(func, len(args), nout)
1829
+ else:
1830
+ # Get number of outputs and output types by calling the function on
1831
+ # the first entries of args. We also cache the result to prevent
1832
+ # the subsequent call when the ufunc is evaluated.
1833
+ # Assumes that ufunc first evaluates the 0th elements in the input
1834
+ # arrays (the input values are not checked to ensure this)
1835
+ inputs = [asarray(_a).flat[0] for _a in args]
1836
+ outputs = func(*inputs)
1837
+
1838
+ # Performance note: profiling indicates that -- for simple
1839
+ # functions at least -- this wrapping can almost double the
1840
+ # execution time.
1841
+ # Hence we make it optional.
1842
+ if self.cache:
1843
+ _cache = [outputs]
1844
+
1845
+ def _func(*vargs):
1846
+ if _cache:
1847
+ return _cache.pop()
1848
+ else:
1849
+ return func(*vargs)
1850
+ else:
1851
+ _func = func
1852
+
1853
+ if isinstance(outputs, tuple):
1854
+ nout = len(outputs)
1855
+ else:
1856
+ nout = 1
1857
+ outputs = (outputs,)
1858
+
1859
+ otypes = ''.join([asarray(outputs[_k]).dtype.char
1860
+ for _k in range(nout)])
1861
+
1862
+ # Performance note: profiling indicates that creating the ufunc is
1863
+ # not a significant cost compared with wrapping so it seems not
1864
+ # worth trying to cache this.
1865
+ ufunc = frompyfunc(_func, len(args), nout)
1866
+
1867
+ return ufunc, otypes
1868
+
1869
+ def _vectorize_call(self, func, args):
1870
+ """Vectorized call to `func` over positional `args`."""
1871
+ if not args:
1872
+ _res = func()
1873
+ else:
1874
+ ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)
1875
+
1876
+ # Convert args to object arrays first
1877
+ inputs = [array(_a, copy=False, subok=True, dtype=object)
1878
+ for _a in args]
1879
+
1880
+ outputs = ufunc(*inputs)
1881
+
1882
+ if ufunc.nout == 1:
1883
+ _res = array(outputs,
1884
+ copy=False, subok=True, dtype=otypes[0])
1885
+ else:
1886
+ _res = tuple([array(_x, copy=False, subok=True, dtype=_t)
1887
+ for _x, _t in zip(outputs, otypes)])
1888
+ return _res
1889
+
1890
+
1891
+ def cov(m, y=None, rowvar=1, bias=0, ddof=None, fweights=None, aweights=None):
1892
+ """
1893
+ Estimate a covariance matrix, given data and weights.
1894
+
1895
+ Covariance indicates the level to which two variables vary together.
1896
+ If we examine N-dimensional samples, :math:`X = [x_1, x_2, ... x_N]^T`,
1897
+ then the covariance matrix element :math:`C_{ij}` is the covariance of
1898
+ :math:`x_i` and :math:`x_j`. The element :math:`C_{ii}` is the variance
1899
+ of :math:`x_i`.
1900
+
1901
+ See the notes for an outline of the algorithm.
1902
+
1903
+ Parameters
1904
+ ----------
1905
+ m : array_like
1906
+ A 1-D or 2-D array containing multiple variables and observations.
1907
+ Each row of `m` represents a variable, and each column a single
1908
+ observation of all those variables. Also see `rowvar` below.
1909
+ y : array_like, optional
1910
+ An additional set of variables and observations. `y` has the same form
1911
+ as that of `m`.
1912
+ rowvar : int, optional
1913
+ If `rowvar` is non-zero (default), then each row represents a
1914
+ variable, with observations in the columns. Otherwise, the relationship
1915
+ is transposed: each column represents a variable, while the rows
1916
+ contain observations.
1917
+ bias : int, optional
1918
+ Default normalization is by ``(N - 1)``, where ``N`` corresponds to the
1919
+ number of observations given (unbiased estimate). If `bias` is 1, then
1920
+ normalization is by ``N``. These values can be overridden by using the
1921
+ keyword ``ddof`` in numpy versions >= 1.5.
1922
+ ddof : int, optional
1923
+ If not ``None`` the default value implied by `bias` is overridden.
1924
+ Note that ``ddof=1`` will return the unbiased estimate, even if both
1925
+ `fweights` and `aweights` are specified, and ``ddof=0`` will return
1926
+ the simple average. See the notes for the details. The default value
1927
+ is ``None``.
1928
+
1929
+ .. versionadded:: 1.5
1930
+ fweights : array_like, int, optional
1931
+ 1-D array of integer freguency weights; the number of times each
1932
+ observation vector should be repeated.
1933
+
1934
+ .. versionadded:: 1.10
1935
+ aweights : array_like, optional
1936
+ 1-D array of observation vector weights. These relative weights are
1937
+ typically large for observations considered "important" and smaller for
1938
+ observations considered less "important". If ``ddof=0`` the array of
1939
+ weights can be used to assign probabilities to observation vectors.
1940
+
1941
+ .. versionadded:: 1.10
1942
+
1943
+ Returns
1944
+ -------
1945
+ out : ndarray
1946
+ The covariance matrix of the variables.
1947
+
1948
+ See Also
1949
+ --------
1950
+ corrcoef : Normalized covariance matrix
1951
+
1952
+ Notes
1953
+ -----
1954
+ Assume that the observations are in the columns of the observation
1955
+ array `m` and let ``f = fweights`` and ``a = aweights`` for brevity. The
1956
+ steps to compute the weighted covariance are as follows::
1957
+
1958
+ >>> w = f * a
1959
+ >>> v1 = np.sum(w)
1960
+ >>> v2 = np.sum(w * a)
1961
+ >>> m -= np.sum(m * w, axis=1, keepdims=True) / v1
1962
+ >>> cov = np.dot(m * w, m.T) * v1 / (v1**2 - ddof * v2)
1963
+
1964
+ Note that when ``a == 1``, the normalization factor
1965
+ ``v1 / (v1**2 - ddof * v2)`` goes over to ``1 / (np.sum(f) - ddof)``
1966
+ as it should.
1967
+
1968
+ Examples
1969
+ --------
1970
+ Consider two variables, :math:`x_0` and :math:`x_1`, which
1971
+ correlate perfectly, but in opposite directions:
1972
+
1973
+ >>> x = np.array([[0, 2], [1, 1], [2, 0]]).T
1974
+ >>> x
1975
+ array([[0, 1, 2],
1976
+ [2, 1, 0]])
1977
+
1978
+ Note how :math:`x_0` increases while :math:`x_1` decreases. The covariance
1979
+ matrix shows this clearly:
1980
+
1981
+ >>> np.cov(x)
1982
+ array([[ 1., -1.],
1983
+ [-1., 1.]])
1984
+
1985
+ Note that element :math:`C_{0,1}`, which shows the correlation between
1986
+ :math:`x_0` and :math:`x_1`, is negative.
1987
+
1988
+ Further, note how `x` and `y` are combined:
1989
+
1990
+ >>> x = [-2.1, -1, 4.3]
1991
+ >>> y = [3, 1.1, 0.12]
1992
+ >>> X = np.vstack((x,y))
1993
+ >>> print np.cov(X)
1994
+ [[ 11.71 -4.286 ]
1995
+ [ -4.286 2.14413333]]
1996
+ >>> print np.cov(x, y)
1997
+ [[ 11.71 -4.286 ]
1998
+ [ -4.286 2.14413333]]
1999
+ >>> print np.cov(x)
2000
+ 11.71
2001
+
2002
+ """
2003
+ # Check inputs
2004
+ if ddof is not None and ddof != int(ddof):
2005
+ raise ValueError(
2006
+ "ddof must be integer")
2007
+
2008
+ # Handles complex arrays too
2009
+ m = np.asarray(m)
2010
+ if y is None:
2011
+ dtype = np.result_type(m, np.float64)
2012
+ else:
2013
+ y = np.asarray(y)
2014
+ dtype = np.result_type(m, y, np.float64)
2015
+ X = array(m, ndmin=2, dtype=dtype)
2016
+ if rowvar == 0 and X.shape[0] != 1:
2017
+ X = X.T
2018
+ if X.shape[0] == 0:
2019
+ return np.array([]).reshape(0, 0)
2020
+ if y is not None:
2021
+ y = array(y, copy=False, ndmin=2, dtype=dtype)
2022
+ if rowvar == 0 and y.shape[0] != 1:
2023
+ y = y.T
2024
+ X = np.vstack((X, y))
2025
+
2026
+ if ddof is None:
2027
+ if bias == 0:
2028
+ ddof = 1
2029
+ else:
2030
+ ddof = 0
2031
+
2032
+ # Get the product of frequencies and weights
2033
+ w = None
2034
+ if fweights is not None:
2035
+ fweights = np.asarray(fweights, dtype=np.float)
2036
+ if not np.all(fweights == np.around(fweights)):
2037
+ raise TypeError(
2038
+ "fweights must be integer")
2039
+ if fweights.ndim > 1:
2040
+ raise RuntimeError(
2041
+ "cannot handle multidimensional fweights")
2042
+ if fweights.shape[0] != X.shape[1]:
2043
+ raise RuntimeError(
2044
+ "incompatible numbers of samples and fweights")
2045
+ if any(fweights < 0):
2046
+ raise ValueError(
2047
+ "fweights cannot be negative")
2048
+ w = fweights
2049
+ if aweights is not None:
2050
+ aweights = np.asarray(aweights, dtype=np.float)
2051
+ if aweights.ndim > 1:
2052
+ raise RuntimeError(
2053
+ "cannot handle multidimensional aweights")
2054
+ if aweights.shape[0] != X.shape[1]:
2055
+ raise RuntimeError(
2056
+ "incompatible numbers of samples and aweights")
2057
+ if any(aweights < 0):
2058
+ raise ValueError(
2059
+ "aweights cannot be negative")
2060
+ if w is None:
2061
+ w = aweights
2062
+ else:
2063
+ w *= aweights
2064
+
2065
+ avg, w_sum = average(X, axis=1, weights=w, returned=True)
2066
+ w_sum = w_sum[0]
2067
+
2068
+ # Determine the normalization
2069
+ if w is None:
2070
+ fact = float(X.shape[1] - ddof)
2071
+ elif ddof == 0:
2072
+ fact = w_sum
2073
+ elif aweights is None:
2074
+ fact = w_sum - ddof
2075
+ else:
2076
+ fact = w_sum - ddof*sum(w*aweights)/w_sum
2077
+
2078
+ if fact <= 0:
2079
+ warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning)
2080
+ fact = 0.0
2081
+
2082
+ X -= avg[:, None]
2083
+ if w is None:
2084
+ X_T = X.T
2085
+ else:
2086
+ X_T = (X*w).T
2087
+ return (dot(X, X_T.conj())/fact).squeeze()
2088
+
2089
+
2090
+ def corrcoef(x, y=None, rowvar=1, bias=np._NoValue, ddof=np._NoValue):
2091
+ """
2092
+ Return Pearson product-moment correlation coefficients.
2093
+
2094
+ Please refer to the documentation for `cov` for more detail. The
2095
+ relationship between the correlation coefficient matrix, `R`, and the
2096
+ covariance matrix, `C`, is
2097
+
2098
+ .. math:: R_{ij} = \\frac{ C_{ij} } { \\sqrt{ C_{ii} * C_{jj} } }
2099
+
2100
+ The values of `R` are between -1 and 1, inclusive.
2101
+
2102
+ Parameters
2103
+ ----------
2104
+ x : array_like
2105
+ A 1-D or 2-D array containing multiple variables and observations.
2106
+ Each row of `x` represents a variable, and each column a single
2107
+ observation of all those variables. Also see `rowvar` below.
2108
+ y : array_like, optional
2109
+ An additional set of variables and observations. `y` has the same
2110
+ shape as `x`.
2111
+ rowvar : int, optional
2112
+ If `rowvar` is non-zero (default), then each row represents a
2113
+ variable, with observations in the columns. Otherwise, the relationship
2114
+ is transposed: each column represents a variable, while the rows
2115
+ contain observations.
2116
+ bias : _NoValue, optional
2117
+ Has no affect, do not use.
2118
+
2119
+ .. deprecated:: 1.10.0
2120
+ ddof : _NoValue, optional
2121
+ Has no affect, do not use.
2122
+
2123
+ .. deprecated:: 1.10.0
2124
+
2125
+ Returns
2126
+ -------
2127
+ R : ndarray
2128
+ The correlation coefficient matrix of the variables.
2129
+
2130
+ See Also
2131
+ --------
2132
+ cov : Covariance matrix
2133
+
2134
+ Notes
2135
+ -----
2136
+ This function accepts but discards arguments `bias` and `ddof`. This is
2137
+ for backwards compatibility with previous versions of this function. These
2138
+ arguments had no effect on the return values of the function and can be
2139
+ safely ignored in this and previous versions of numpy.
2140
+ """
2141
+ if bias is not np._NoValue or ddof is not np._NoValue:
2142
+ # 2015-03-15, 1.10
2143
+ warnings.warn('bias and ddof have no affect and are deprecated',
2144
+ DeprecationWarning)
2145
+ c = cov(x, y, rowvar)
2146
+ try:
2147
+ d = diag(c)
2148
+ except ValueError: # scalar covariance
2149
+ # nan if incorrect value (nan, inf, 0), 1 otherwise
2150
+ return c / c
2151
+ return c / sqrt(multiply.outer(d, d))
2152
+
2153
+
2154
+ def blackman(M):
2155
+ """
2156
+ Return the Blackman window.
2157
+
2158
+ The Blackman window is a taper formed by using the first three
2159
+ terms of a summation of cosines. It was designed to have close to the
2160
+ minimal leakage possible. It is close to optimal, only slightly worse
2161
+ than a Kaiser window.
2162
+
2163
+ Parameters
2164
+ ----------
2165
+ M : int
2166
+ Number of points in the output window. If zero or less, an empty
2167
+ array is returned.
2168
+
2169
+ Returns
2170
+ -------
2171
+ out : ndarray
2172
+ The window, with the maximum value normalized to one (the value one
2173
+ appears only if the number of samples is odd).
2174
+
2175
+ See Also
2176
+ --------
2177
+ bartlett, hamming, hanning, kaiser
2178
+
2179
+ Notes
2180
+ -----
2181
+ The Blackman window is defined as
2182
+
2183
+ .. math:: w(n) = 0.42 - 0.5 \\cos(2\\pi n/M) + 0.08 \\cos(4\\pi n/M)
2184
+
2185
+ Most references to the Blackman window come from the signal processing
2186
+ literature, where it is used as one of many windowing functions for
2187
+ smoothing values. It is also known as an apodization (which means
2188
+ "removing the foot", i.e. smoothing discontinuities at the beginning
2189
+ and end of the sampled signal) or tapering function. It is known as a
2190
+ "near optimal" tapering function, almost as good (by some measures)
2191
+ as the kaiser window.
2192
+
2193
+ References
2194
+ ----------
2195
+ Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra,
2196
+ Dover Publications, New York.
2197
+
2198
+ Oppenheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing.
2199
+ Upper Saddle River, NJ: Prentice-Hall, 1999, pp. 468-471.
2200
+
2201
+ Examples
2202
+ --------
2203
+ >>> np.blackman(12)
2204
+ array([ -1.38777878e-17, 3.26064346e-02, 1.59903635e-01,
2205
+ 4.14397981e-01, 7.36045180e-01, 9.67046769e-01,
2206
+ 9.67046769e-01, 7.36045180e-01, 4.14397981e-01,
2207
+ 1.59903635e-01, 3.26064346e-02, -1.38777878e-17])
2208
+
2209
+
2210
+ Plot the window and the frequency response:
2211
+
2212
+ >>> from numpy.fft import fft, fftshift
2213
+ >>> window = np.blackman(51)
2214
+ >>> plt.plot(window)
2215
+ [<matplotlib.lines.Line2D object at 0x...>]
2216
+ >>> plt.title("Blackman window")
2217
+ <matplotlib.text.Text object at 0x...>
2218
+ >>> plt.ylabel("Amplitude")
2219
+ <matplotlib.text.Text object at 0x...>
2220
+ >>> plt.xlabel("Sample")
2221
+ <matplotlib.text.Text object at 0x...>
2222
+ >>> plt.show()
2223
+
2224
+ >>> plt.figure()
2225
+ <matplotlib.figure.Figure object at 0x...>
2226
+ >>> A = fft(window, 2048) / 25.5
2227
+ >>> mag = np.abs(fftshift(A))
2228
+ >>> freq = np.linspace(-0.5, 0.5, len(A))
2229
+ >>> response = 20 * np.log10(mag)
2230
+ >>> response = np.clip(response, -100, 100)
2231
+ >>> plt.plot(freq, response)
2232
+ [<matplotlib.lines.Line2D object at 0x...>]
2233
+ >>> plt.title("Frequency response of Blackman window")
2234
+ <matplotlib.text.Text object at 0x...>
2235
+ >>> plt.ylabel("Magnitude [dB]")
2236
+ <matplotlib.text.Text object at 0x...>
2237
+ >>> plt.xlabel("Normalized frequency [cycles per sample]")
2238
+ <matplotlib.text.Text object at 0x...>
2239
+ >>> plt.axis('tight')
2240
+ (-0.5, 0.5, -100.0, ...)
2241
+ >>> plt.show()
2242
+
2243
+ """
2244
+ if M < 1:
2245
+ return array([])
2246
+ if M == 1:
2247
+ return ones(1, float)
2248
+ n = arange(0, M)
2249
+ return 0.42 - 0.5*cos(2.0*pi*n/(M-1)) + 0.08*cos(4.0*pi*n/(M-1))
2250
+
2251
+
2252
+ def bartlett(M):
2253
+ """
2254
+ Return the Bartlett window.
2255
+
2256
+ The Bartlett window is very similar to a triangular window, except
2257
+ that the end points are at zero. It is often used in signal
2258
+ processing for tapering a signal, without generating too much
2259
+ ripple in the frequency domain.
2260
+
2261
+ Parameters
2262
+ ----------
2263
+ M : int
2264
+ Number of points in the output window. If zero or less, an
2265
+ empty array is returned.
2266
+
2267
+ Returns
2268
+ -------
2269
+ out : array
2270
+ The triangular window, with the maximum value normalized to one
2271
+ (the value one appears only if the number of samples is odd), with
2272
+ the first and last samples equal to zero.
2273
+
2274
+ See Also
2275
+ --------
2276
+ blackman, hamming, hanning, kaiser
2277
+
2278
+ Notes
2279
+ -----
2280
+ The Bartlett window is defined as
2281
+
2282
+ .. math:: w(n) = \\frac{2}{M-1} \\left(
2283
+ \\frac{M-1}{2} - \\left|n - \\frac{M-1}{2}\\right|
2284
+ \\right)
2285
+
2286
+ Most references to the Bartlett window come from the signal
2287
+ processing literature, where it is used as one of many windowing
2288
+ functions for smoothing values. Note that convolution with this
2289
+ window produces linear interpolation. It is also known as an
2290
+ apodization (which means"removing the foot", i.e. smoothing
2291
+ discontinuities at the beginning and end of the sampled signal) or
2292
+ tapering function. The fourier transform of the Bartlett is the product
2293
+ of two sinc functions.
2294
+ Note the excellent discussion in Kanasewich.
2295
+
2296
+ References
2297
+ ----------
2298
+ .. [1] M.S. Bartlett, "Periodogram Analysis and Continuous Spectra",
2299
+ Biometrika 37, 1-16, 1950.
2300
+ .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics",
2301
+ The University of Alberta Press, 1975, pp. 109-110.
2302
+ .. [3] A.V. Oppenheim and R.W. Schafer, "Discrete-Time Signal
2303
+ Processing", Prentice-Hall, 1999, pp. 468-471.
2304
+ .. [4] Wikipedia, "Window function",
2305
+ http://en.wikipedia.org/wiki/Window_function
2306
+ .. [5] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling,
2307
+ "Numerical Recipes", Cambridge University Press, 1986, page 429.
2308
+
2309
+
2310
+ Examples
2311
+ --------
2312
+ >>> np.bartlett(12)
2313
+ array([ 0. , 0.18181818, 0.36363636, 0.54545455, 0.72727273,
2314
+ 0.90909091, 0.90909091, 0.72727273, 0.54545455, 0.36363636,
2315
+ 0.18181818, 0. ])
2316
+
2317
+ Plot the window and its frequency response (requires SciPy and matplotlib):
2318
+
2319
+ >>> from numpy.fft import fft, fftshift
2320
+ >>> window = np.bartlett(51)
2321
+ >>> plt.plot(window)
2322
+ [<matplotlib.lines.Line2D object at 0x...>]
2323
+ >>> plt.title("Bartlett window")
2324
+ <matplotlib.text.Text object at 0x...>
2325
+ >>> plt.ylabel("Amplitude")
2326
+ <matplotlib.text.Text object at 0x...>
2327
+ >>> plt.xlabel("Sample")
2328
+ <matplotlib.text.Text object at 0x...>
2329
+ >>> plt.show()
2330
+
2331
+ >>> plt.figure()
2332
+ <matplotlib.figure.Figure object at 0x...>
2333
+ >>> A = fft(window, 2048) / 25.5
2334
+ >>> mag = np.abs(fftshift(A))
2335
+ >>> freq = np.linspace(-0.5, 0.5, len(A))
2336
+ >>> response = 20 * np.log10(mag)
2337
+ >>> response = np.clip(response, -100, 100)
2338
+ >>> plt.plot(freq, response)
2339
+ [<matplotlib.lines.Line2D object at 0x...>]
2340
+ >>> plt.title("Frequency response of Bartlett window")
2341
+ <matplotlib.text.Text object at 0x...>
2342
+ >>> plt.ylabel("Magnitude [dB]")
2343
+ <matplotlib.text.Text object at 0x...>
2344
+ >>> plt.xlabel("Normalized frequency [cycles per sample]")
2345
+ <matplotlib.text.Text object at 0x...>
2346
+ >>> plt.axis('tight')
2347
+ (-0.5, 0.5, -100.0, ...)
2348
+ >>> plt.show()
2349
+
2350
+ """
2351
+ if M < 1:
2352
+ return array([])
2353
+ if M == 1:
2354
+ return ones(1, float)
2355
+ n = arange(0, M)
2356
+ return where(less_equal(n, (M-1)/2.0), 2.0*n/(M-1), 2.0 - 2.0*n/(M-1))
2357
+
2358
+
2359
+ def hanning(M):
2360
+ """
2361
+ Return the Hanning window.
2362
+
2363
+ The Hanning window is a taper formed by using a weighted cosine.
2364
+
2365
+ Parameters
2366
+ ----------
2367
+ M : int
2368
+ Number of points in the output window. If zero or less, an
2369
+ empty array is returned.
2370
+
2371
+ Returns
2372
+ -------
2373
+ out : ndarray, shape(M,)
2374
+ The window, with the maximum value normalized to one (the value
2375
+ one appears only if `M` is odd).
2376
+
2377
+ See Also
2378
+ --------
2379
+ bartlett, blackman, hamming, kaiser
2380
+
2381
+ Notes
2382
+ -----
2383
+ The Hanning window is defined as
2384
+
2385
+ .. math:: w(n) = 0.5 - 0.5cos\\left(\\frac{2\\pi{n}}{M-1}\\right)
2386
+ \\qquad 0 \\leq n \\leq M-1
2387
+
2388
+ The Hanning was named for Julius von Hann, an Austrian meteorologist.
2389
+ It is also known as the Cosine Bell. Some authors prefer that it be
2390
+ called a Hann window, to help avoid confusion with the very similar
2391
+ Hamming window.
2392
+
2393
+ Most references to the Hanning window come from the signal processing
2394
+ literature, where it is used as one of many windowing functions for
2395
+ smoothing values. It is also known as an apodization (which means
2396
+ "removing the foot", i.e. smoothing discontinuities at the beginning
2397
+ and end of the sampled signal) or tapering function.
2398
+
2399
+ References
2400
+ ----------
2401
+ .. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power
2402
+ spectra, Dover Publications, New York.
2403
+ .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics",
2404
+ The University of Alberta Press, 1975, pp. 106-108.
2405
+ .. [3] Wikipedia, "Window function",
2406
+ http://en.wikipedia.org/wiki/Window_function
2407
+ .. [4] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling,
2408
+ "Numerical Recipes", Cambridge University Press, 1986, page 425.
2409
+
2410
+ Examples
2411
+ --------
2412
+ >>> np.hanning(12)
2413
+ array([ 0. , 0.07937323, 0.29229249, 0.57115742, 0.82743037,
2414
+ 0.97974649, 0.97974649, 0.82743037, 0.57115742, 0.29229249,
2415
+ 0.07937323, 0. ])
2416
+
2417
+ Plot the window and its frequency response:
2418
+
2419
+ >>> from numpy.fft import fft, fftshift
2420
+ >>> window = np.hanning(51)
2421
+ >>> plt.plot(window)
2422
+ [<matplotlib.lines.Line2D object at 0x...>]
2423
+ >>> plt.title("Hann window")
2424
+ <matplotlib.text.Text object at 0x...>
2425
+ >>> plt.ylabel("Amplitude")
2426
+ <matplotlib.text.Text object at 0x...>
2427
+ >>> plt.xlabel("Sample")
2428
+ <matplotlib.text.Text object at 0x...>
2429
+ >>> plt.show()
2430
+
2431
+ >>> plt.figure()
2432
+ <matplotlib.figure.Figure object at 0x...>
2433
+ >>> A = fft(window, 2048) / 25.5
2434
+ >>> mag = np.abs(fftshift(A))
2435
+ >>> freq = np.linspace(-0.5, 0.5, len(A))
2436
+ >>> response = 20 * np.log10(mag)
2437
+ >>> response = np.clip(response, -100, 100)
2438
+ >>> plt.plot(freq, response)
2439
+ [<matplotlib.lines.Line2D object at 0x...>]
2440
+ >>> plt.title("Frequency response of the Hann window")
2441
+ <matplotlib.text.Text object at 0x...>
2442
+ >>> plt.ylabel("Magnitude [dB]")
2443
+ <matplotlib.text.Text object at 0x...>
2444
+ >>> plt.xlabel("Normalized frequency [cycles per sample]")
2445
+ <matplotlib.text.Text object at 0x...>
2446
+ >>> plt.axis('tight')
2447
+ (-0.5, 0.5, -100.0, ...)
2448
+ >>> plt.show()
2449
+
2450
+ """
2451
+ if M < 1:
2452
+ return array([])
2453
+ if M == 1:
2454
+ return ones(1, float)
2455
+ n = arange(0, M)
2456
+ return 0.5 - 0.5*cos(2.0*pi*n/(M-1))
2457
+
2458
+
2459
+ def hamming(M):
2460
+ """
2461
+ Return the Hamming window.
2462
+
2463
+ The Hamming window is a taper formed by using a weighted cosine.
2464
+
2465
+ Parameters
2466
+ ----------
2467
+ M : int
2468
+ Number of points in the output window. If zero or less, an
2469
+ empty array is returned.
2470
+
2471
+ Returns
2472
+ -------
2473
+ out : ndarray
2474
+ The window, with the maximum value normalized to one (the value
2475
+ one appears only if the number of samples is odd).
2476
+
2477
+ See Also
2478
+ --------
2479
+ bartlett, blackman, hanning, kaiser
2480
+
2481
+ Notes
2482
+ -----
2483
+ The Hamming window is defined as
2484
+
2485
+ .. math:: w(n) = 0.54 - 0.46cos\\left(\\frac{2\\pi{n}}{M-1}\\right)
2486
+ \\qquad 0 \\leq n \\leq M-1
2487
+
2488
+ The Hamming was named for R. W. Hamming, an associate of J. W. Tukey
2489
+ and is described in Blackman and Tukey. It was recommended for
2490
+ smoothing the truncated autocovariance function in the time domain.
2491
+ Most references to the Hamming window come from the signal processing
2492
+ literature, where it is used as one of many windowing functions for
2493
+ smoothing values. It is also known as an apodization (which means
2494
+ "removing the foot", i.e. smoothing discontinuities at the beginning
2495
+ and end of the sampled signal) or tapering function.
2496
+
2497
+ References
2498
+ ----------
2499
+ .. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power
2500
+ spectra, Dover Publications, New York.
2501
+ .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The
2502
+ University of Alberta Press, 1975, pp. 109-110.
2503
+ .. [3] Wikipedia, "Window function",
2504
+ http://en.wikipedia.org/wiki/Window_function
2505
+ .. [4] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling,
2506
+ "Numerical Recipes", Cambridge University Press, 1986, page 425.
2507
+
2508
+ Examples
2509
+ --------
2510
+ >>> np.hamming(12)
2511
+ array([ 0.08 , 0.15302337, 0.34890909, 0.60546483, 0.84123594,
2512
+ 0.98136677, 0.98136677, 0.84123594, 0.60546483, 0.34890909,
2513
+ 0.15302337, 0.08 ])
2514
+
2515
+ Plot the window and the frequency response:
2516
+
2517
+ >>> from numpy.fft import fft, fftshift
2518
+ >>> window = np.hamming(51)
2519
+ >>> plt.plot(window)
2520
+ [<matplotlib.lines.Line2D object at 0x...>]
2521
+ >>> plt.title("Hamming window")
2522
+ <matplotlib.text.Text object at 0x...>
2523
+ >>> plt.ylabel("Amplitude")
2524
+ <matplotlib.text.Text object at 0x...>
2525
+ >>> plt.xlabel("Sample")
2526
+ <matplotlib.text.Text object at 0x...>
2527
+ >>> plt.show()
2528
+
2529
+ >>> plt.figure()
2530
+ <matplotlib.figure.Figure object at 0x...>
2531
+ >>> A = fft(window, 2048) / 25.5
2532
+ >>> mag = np.abs(fftshift(A))
2533
+ >>> freq = np.linspace(-0.5, 0.5, len(A))
2534
+ >>> response = 20 * np.log10(mag)
2535
+ >>> response = np.clip(response, -100, 100)
2536
+ >>> plt.plot(freq, response)
2537
+ [<matplotlib.lines.Line2D object at 0x...>]
2538
+ >>> plt.title("Frequency response of Hamming window")
2539
+ <matplotlib.text.Text object at 0x...>
2540
+ >>> plt.ylabel("Magnitude [dB]")
2541
+ <matplotlib.text.Text object at 0x...>
2542
+ >>> plt.xlabel("Normalized frequency [cycles per sample]")
2543
+ <matplotlib.text.Text object at 0x...>
2544
+ >>> plt.axis('tight')
2545
+ (-0.5, 0.5, -100.0, ...)
2546
+ >>> plt.show()
2547
+
2548
+ """
2549
+ if M < 1:
2550
+ return array([])
2551
+ if M == 1:
2552
+ return ones(1, float)
2553
+ n = arange(0, M)
2554
+ return 0.54 - 0.46*cos(2.0*pi*n/(M-1))
2555
+
2556
+ ## Code from cephes for i0
2557
+
2558
+ _i0A = [
2559
+ -4.41534164647933937950E-18,
2560
+ 3.33079451882223809783E-17,
2561
+ -2.43127984654795469359E-16,
2562
+ 1.71539128555513303061E-15,
2563
+ -1.16853328779934516808E-14,
2564
+ 7.67618549860493561688E-14,
2565
+ -4.85644678311192946090E-13,
2566
+ 2.95505266312963983461E-12,
2567
+ -1.72682629144155570723E-11,
2568
+ 9.67580903537323691224E-11,
2569
+ -5.18979560163526290666E-10,
2570
+ 2.65982372468238665035E-9,
2571
+ -1.30002500998624804212E-8,
2572
+ 6.04699502254191894932E-8,
2573
+ -2.67079385394061173391E-7,
2574
+ 1.11738753912010371815E-6,
2575
+ -4.41673835845875056359E-6,
2576
+ 1.64484480707288970893E-5,
2577
+ -5.75419501008210370398E-5,
2578
+ 1.88502885095841655729E-4,
2579
+ -5.76375574538582365885E-4,
2580
+ 1.63947561694133579842E-3,
2581
+ -4.32430999505057594430E-3,
2582
+ 1.05464603945949983183E-2,
2583
+ -2.37374148058994688156E-2,
2584
+ 4.93052842396707084878E-2,
2585
+ -9.49010970480476444210E-2,
2586
+ 1.71620901522208775349E-1,
2587
+ -3.04682672343198398683E-1,
2588
+ 6.76795274409476084995E-1
2589
+ ]
2590
+
2591
+ _i0B = [
2592
+ -7.23318048787475395456E-18,
2593
+ -4.83050448594418207126E-18,
2594
+ 4.46562142029675999901E-17,
2595
+ 3.46122286769746109310E-17,
2596
+ -2.82762398051658348494E-16,
2597
+ -3.42548561967721913462E-16,
2598
+ 1.77256013305652638360E-15,
2599
+ 3.81168066935262242075E-15,
2600
+ -9.55484669882830764870E-15,
2601
+ -4.15056934728722208663E-14,
2602
+ 1.54008621752140982691E-14,
2603
+ 3.85277838274214270114E-13,
2604
+ 7.18012445138366623367E-13,
2605
+ -1.79417853150680611778E-12,
2606
+ -1.32158118404477131188E-11,
2607
+ -3.14991652796324136454E-11,
2608
+ 1.18891471078464383424E-11,
2609
+ 4.94060238822496958910E-10,
2610
+ 3.39623202570838634515E-9,
2611
+ 2.26666899049817806459E-8,
2612
+ 2.04891858946906374183E-7,
2613
+ 2.89137052083475648297E-6,
2614
+ 6.88975834691682398426E-5,
2615
+ 3.36911647825569408990E-3,
2616
+ 8.04490411014108831608E-1
2617
+ ]
2618
+
2619
+
2620
+ def _chbevl(x, vals):
2621
+ b0 = vals[0]
2622
+ b1 = 0.0
2623
+
2624
+ for i in range(1, len(vals)):
2625
+ b2 = b1
2626
+ b1 = b0
2627
+ b0 = x*b1 - b2 + vals[i]
2628
+
2629
+ return 0.5*(b0 - b2)
2630
+
2631
+
2632
+ def _i0_1(x):
2633
+ return exp(x) * _chbevl(x/2.0-2, _i0A)
2634
+
2635
+
2636
+ def _i0_2(x):
2637
+ return exp(x) * _chbevl(32.0/x - 2.0, _i0B) / sqrt(x)
2638
+
2639
+
2640
+ def i0(x):
2641
+ """
2642
+ Modified Bessel function of the first kind, order 0.
2643
+
2644
+ Usually denoted :math:`I_0`. This function does broadcast, but will *not*
2645
+ "up-cast" int dtype arguments unless accompanied by at least one float or
2646
+ complex dtype argument (see Raises below).
2647
+
2648
+ Parameters
2649
+ ----------
2650
+ x : array_like, dtype float or complex
2651
+ Argument of the Bessel function.
2652
+
2653
+ Returns
2654
+ -------
2655
+ out : ndarray, shape = x.shape, dtype = x.dtype
2656
+ The modified Bessel function evaluated at each of the elements of `x`.
2657
+
2658
+ Raises
2659
+ ------
2660
+ TypeError: array cannot be safely cast to required type
2661
+ If argument consists exclusively of int dtypes.
2662
+
2663
+ See Also
2664
+ --------
2665
+ scipy.special.iv, scipy.special.ive
2666
+
2667
+ Notes
2668
+ -----
2669
+ We use the algorithm published by Clenshaw [1]_ and referenced by
2670
+ Abramowitz and Stegun [2]_, for which the function domain is
2671
+ partitioned into the two intervals [0,8] and (8,inf), and Chebyshev
2672
+ polynomial expansions are employed in each interval. Relative error on
2673
+ the domain [0,30] using IEEE arithmetic is documented [3]_ as having a
2674
+ peak of 5.8e-16 with an rms of 1.4e-16 (n = 30000).
2675
+
2676
+ References
2677
+ ----------
2678
+ .. [1] C. W. Clenshaw, "Chebyshev series for mathematical functions", in
2679
+ *National Physical Laboratory Mathematical Tables*, vol. 5, London:
2680
+ Her Majesty's Stationery Office, 1962.
2681
+ .. [2] M. Abramowitz and I. A. Stegun, *Handbook of Mathematical
2682
+ Functions*, 10th printing, New York: Dover, 1964, pp. 379.
2683
+ http://www.math.sfu.ca/~cbm/aands/page_379.htm
2684
+ .. [3] http://kobesearch.cpan.org/htdocs/Math-Cephes/Math/Cephes.html
2685
+
2686
+ Examples
2687
+ --------
2688
+ >>> np.i0([0.])
2689
+ array(1.0)
2690
+ >>> np.i0([0., 1. + 2j])
2691
+ array([ 1.00000000+0.j , 0.18785373+0.64616944j])
2692
+
2693
+ """
2694
+ x = atleast_1d(x).copy()
2695
+ y = empty_like(x)
2696
+ ind = (x < 0)
2697
+ x[ind] = -x[ind]
2698
+ ind = (x <= 8.0)
2699
+ y[ind] = _i0_1(x[ind])
2700
+ ind2 = ~ind
2701
+ y[ind2] = _i0_2(x[ind2])
2702
+ return y.squeeze()
2703
+
2704
+ ## End of cephes code for i0
2705
+
2706
+
2707
+ def kaiser(M, beta):
2708
+ """
2709
+ Return the Kaiser window.
2710
+
2711
+ The Kaiser window is a taper formed by using a Bessel function.
2712
+
2713
+ Parameters
2714
+ ----------
2715
+ M : int
2716
+ Number of points in the output window. If zero or less, an
2717
+ empty array is returned.
2718
+ beta : float
2719
+ Shape parameter for window.
2720
+
2721
+ Returns
2722
+ -------
2723
+ out : array
2724
+ The window, with the maximum value normalized to one (the value
2725
+ one appears only if the number of samples is odd).
2726
+
2727
+ See Also
2728
+ --------
2729
+ bartlett, blackman, hamming, hanning
2730
+
2731
+ Notes
2732
+ -----
2733
+ The Kaiser window is defined as
2734
+
2735
+ .. math:: w(n) = I_0\\left( \\beta \\sqrt{1-\\frac{4n^2}{(M-1)^2}}
2736
+ \\right)/I_0(\\beta)
2737
+
2738
+ with
2739
+
2740
+ .. math:: \\quad -\\frac{M-1}{2} \\leq n \\leq \\frac{M-1}{2},
2741
+
2742
+ where :math:`I_0` is the modified zeroth-order Bessel function.
2743
+
2744
+ The Kaiser was named for Jim Kaiser, who discovered a simple
2745
+ approximation to the DPSS window based on Bessel functions. The Kaiser
2746
+ window is a very good approximation to the Digital Prolate Spheroidal
2747
+ Sequence, or Slepian window, which is the transform which maximizes the
2748
+ energy in the main lobe of the window relative to total energy.
2749
+
2750
+ The Kaiser can approximate many other windows by varying the beta
2751
+ parameter.
2752
+
2753
+ ==== =======================
2754
+ beta Window shape
2755
+ ==== =======================
2756
+ 0 Rectangular
2757
+ 5 Similar to a Hamming
2758
+ 6 Similar to a Hanning
2759
+ 8.6 Similar to a Blackman
2760
+ ==== =======================
2761
+
2762
+ A beta value of 14 is probably a good starting point. Note that as beta
2763
+ gets large, the window narrows, and so the number of samples needs to be
2764
+ large enough to sample the increasingly narrow spike, otherwise NaNs will
2765
+ get returned.
2766
+
2767
+ Most references to the Kaiser window come from the signal processing
2768
+ literature, where it is used as one of many windowing functions for
2769
+ smoothing values. It is also known as an apodization (which means
2770
+ "removing the foot", i.e. smoothing discontinuities at the beginning
2771
+ and end of the sampled signal) or tapering function.
2772
+
2773
+ References
2774
+ ----------
2775
+ .. [1] J. F. Kaiser, "Digital Filters" - Ch 7 in "Systems analysis by
2776
+ digital computer", Editors: F.F. Kuo and J.F. Kaiser, p 218-285.
2777
+ John Wiley and Sons, New York, (1966).
2778
+ .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The
2779
+ University of Alberta Press, 1975, pp. 177-178.
2780
+ .. [3] Wikipedia, "Window function",
2781
+ http://en.wikipedia.org/wiki/Window_function
2782
+
2783
+ Examples
2784
+ --------
2785
+ >>> np.kaiser(12, 14)
2786
+ array([ 7.72686684e-06, 3.46009194e-03, 4.65200189e-02,
2787
+ 2.29737120e-01, 5.99885316e-01, 9.45674898e-01,
2788
+ 9.45674898e-01, 5.99885316e-01, 2.29737120e-01,
2789
+ 4.65200189e-02, 3.46009194e-03, 7.72686684e-06])
2790
+
2791
+
2792
+ Plot the window and the frequency response:
2793
+
2794
+ >>> from numpy.fft import fft, fftshift
2795
+ >>> window = np.kaiser(51, 14)
2796
+ >>> plt.plot(window)
2797
+ [<matplotlib.lines.Line2D object at 0x...>]
2798
+ >>> plt.title("Kaiser window")
2799
+ <matplotlib.text.Text object at 0x...>
2800
+ >>> plt.ylabel("Amplitude")
2801
+ <matplotlib.text.Text object at 0x...>
2802
+ >>> plt.xlabel("Sample")
2803
+ <matplotlib.text.Text object at 0x...>
2804
+ >>> plt.show()
2805
+
2806
+ >>> plt.figure()
2807
+ <matplotlib.figure.Figure object at 0x...>
2808
+ >>> A = fft(window, 2048) / 25.5
2809
+ >>> mag = np.abs(fftshift(A))
2810
+ >>> freq = np.linspace(-0.5, 0.5, len(A))
2811
+ >>> response = 20 * np.log10(mag)
2812
+ >>> response = np.clip(response, -100, 100)
2813
+ >>> plt.plot(freq, response)
2814
+ [<matplotlib.lines.Line2D object at 0x...>]
2815
+ >>> plt.title("Frequency response of Kaiser window")
2816
+ <matplotlib.text.Text object at 0x...>
2817
+ >>> plt.ylabel("Magnitude [dB]")
2818
+ <matplotlib.text.Text object at 0x...>
2819
+ >>> plt.xlabel("Normalized frequency [cycles per sample]")
2820
+ <matplotlib.text.Text object at 0x...>
2821
+ >>> plt.axis('tight')
2822
+ (-0.5, 0.5, -100.0, ...)
2823
+ >>> plt.show()
2824
+
2825
+ """
2826
+ from numpy.dual import i0
2827
+ if M == 1:
2828
+ return np.array([1.])
2829
+ n = arange(0, M)
2830
+ alpha = (M-1)/2.0
2831
+ return i0(beta * sqrt(1-((n-alpha)/alpha)**2.0))/i0(float(beta))
2832
+
2833
+
2834
+ def sinc(x):
2835
+ """
2836
+ Return the sinc function.
2837
+
2838
+ The sinc function is :math:`\\sin(\\pi x)/(\\pi x)`.
2839
+
2840
+ Parameters
2841
+ ----------
2842
+ x : ndarray
2843
+ Array (possibly multi-dimensional) of values for which to to
2844
+ calculate ``sinc(x)``.
2845
+
2846
+ Returns
2847
+ -------
2848
+ out : ndarray
2849
+ ``sinc(x)``, which has the same shape as the input.
2850
+
2851
+ Notes
2852
+ -----
2853
+ ``sinc(0)`` is the limit value 1.
2854
+
2855
+ The name sinc is short for "sine cardinal" or "sinus cardinalis".
2856
+
2857
+ The sinc function is used in various signal processing applications,
2858
+ including in anti-aliasing, in the construction of a Lanczos resampling
2859
+ filter, and in interpolation.
2860
+
2861
+ For bandlimited interpolation of discrete-time signals, the ideal
2862
+ interpolation kernel is proportional to the sinc function.
2863
+
2864
+ References
2865
+ ----------
2866
+ .. [1] Weisstein, Eric W. "Sinc Function." From MathWorld--A Wolfram Web
2867
+ Resource. http://mathworld.wolfram.com/SincFunction.html
2868
+ .. [2] Wikipedia, "Sinc function",
2869
+ http://en.wikipedia.org/wiki/Sinc_function
2870
+
2871
+ Examples
2872
+ --------
2873
+ >>> x = np.linspace(-4, 4, 41)
2874
+ >>> np.sinc(x)
2875
+ array([ -3.89804309e-17, -4.92362781e-02, -8.40918587e-02,
2876
+ -8.90384387e-02, -5.84680802e-02, 3.89804309e-17,
2877
+ 6.68206631e-02, 1.16434881e-01, 1.26137788e-01,
2878
+ 8.50444803e-02, -3.89804309e-17, -1.03943254e-01,
2879
+ -1.89206682e-01, -2.16236208e-01, -1.55914881e-01,
2880
+ 3.89804309e-17, 2.33872321e-01, 5.04551152e-01,
2881
+ 7.56826729e-01, 9.35489284e-01, 1.00000000e+00,
2882
+ 9.35489284e-01, 7.56826729e-01, 5.04551152e-01,
2883
+ 2.33872321e-01, 3.89804309e-17, -1.55914881e-01,
2884
+ -2.16236208e-01, -1.89206682e-01, -1.03943254e-01,
2885
+ -3.89804309e-17, 8.50444803e-02, 1.26137788e-01,
2886
+ 1.16434881e-01, 6.68206631e-02, 3.89804309e-17,
2887
+ -5.84680802e-02, -8.90384387e-02, -8.40918587e-02,
2888
+ -4.92362781e-02, -3.89804309e-17])
2889
+
2890
+ >>> plt.plot(x, np.sinc(x))
2891
+ [<matplotlib.lines.Line2D object at 0x...>]
2892
+ >>> plt.title("Sinc Function")
2893
+ <matplotlib.text.Text object at 0x...>
2894
+ >>> plt.ylabel("Amplitude")
2895
+ <matplotlib.text.Text object at 0x...>
2896
+ >>> plt.xlabel("X")
2897
+ <matplotlib.text.Text object at 0x...>
2898
+ >>> plt.show()
2899
+
2900
+ It works in 2-D as well:
2901
+
2902
+ >>> x = np.linspace(-4, 4, 401)
2903
+ >>> xx = np.outer(x, x)
2904
+ >>> plt.imshow(np.sinc(xx))
2905
+ <matplotlib.image.AxesImage object at 0x...>
2906
+
2907
+ """
2908
+ x = np.asanyarray(x)
2909
+ y = pi * where(x == 0, 1.0e-20, x)
2910
+ return sin(y)/y
2911
+
2912
+
2913
+ def msort(a):
2914
+ """
2915
+ Return a copy of an array sorted along the first axis.
2916
+
2917
+ Parameters
2918
+ ----------
2919
+ a : array_like
2920
+ Array to be sorted.
2921
+
2922
+ Returns
2923
+ -------
2924
+ sorted_array : ndarray
2925
+ Array of the same type and shape as `a`.
2926
+
2927
+ See Also
2928
+ --------
2929
+ sort
2930
+
2931
+ Notes
2932
+ -----
2933
+ ``np.msort(a)`` is equivalent to ``np.sort(a, axis=0)``.
2934
+
2935
+ """
2936
+ b = array(a, subok=True, copy=True)
2937
+ b.sort(0)
2938
+ return b
2939
+
2940
+
2941
+ def _ureduce(a, func, **kwargs):
2942
+ """
2943
+ Internal Function.
2944
+ Call `func` with `a` as first argument swapping the axes to use extended
2945
+ axis on functions that don't support it natively.
2946
+
2947
+ Returns result and a.shape with axis dims set to 1.
2948
+
2949
+ Parameters
2950
+ ----------
2951
+ a : array_like
2952
+ Input array or object that can be converted to an array.
2953
+ func : callable
2954
+ Reduction function Kapable of receiving an axis argument.
2955
+ It is is called with `a` as first argument followed by `kwargs`.
2956
+ kwargs : keyword arguments
2957
+ additional keyword arguments to pass to `func`.
2958
+
2959
+ Returns
2960
+ -------
2961
+ result : tuple
2962
+ Result of func(a, **kwargs) and a.shape with axis dims set to 1
2963
+ which can be used to reshape the result to the same shape a ufunc with
2964
+ keepdims=True would produce.
2965
+
2966
+ """
2967
+ a = np.asanyarray(a)
2968
+ axis = kwargs.get('axis', None)
2969
+ if axis is not None:
2970
+ keepdim = list(a.shape)
2971
+ nd = a.ndim
2972
+ try:
2973
+ axis = operator.index(axis)
2974
+ if axis >= nd or axis < -nd:
2975
+ raise IndexError("axis %d out of bounds (%d)" % (axis, a.ndim))
2976
+ keepdim[axis] = 1
2977
+ except TypeError:
2978
+ sax = set()
2979
+ for x in axis:
2980
+ if x >= nd or x < -nd:
2981
+ raise IndexError("axis %d out of bounds (%d)" % (x, nd))
2982
+ if x in sax:
2983
+ raise ValueError("duplicate value in axis")
2984
+ sax.add(x % nd)
2985
+ keepdim[x] = 1
2986
+ keep = sax.symmetric_difference(frozenset(range(nd)))
2987
+ nkeep = len(keep)
2988
+ # swap axis that should not be reduced to front
2989
+ for i, s in enumerate(sorted(keep)):
2990
+ a = a.swapaxes(i, s)
2991
+ # merge reduced axis
2992
+ a = a.reshape(a.shape[:nkeep] + (-1,))
2993
+ kwargs['axis'] = -1
2994
+ else:
2995
+ keepdim = [1] * a.ndim
2996
+
2997
+ r = func(a, **kwargs)
2998
+ return r, keepdim
2999
+
3000
+
3001
+ def median(a, axis=None, out=None, overwrite_input=False, keepdims=False):
3002
+ """
3003
+ Compute the median along the specified axis.
3004
+
3005
+ Returns the median of the array elements.
3006
+
3007
+ Parameters
3008
+ ----------
3009
+ a : array_like
3010
+ Input array or object that can be converted to an array.
3011
+ axis : int or sequence of int, optional
3012
+ Axis along which the medians are computed. The default (axis=None)
3013
+ is to compute the median along a flattened version of the array.
3014
+ A sequence of axes is supported since version 1.9.0.
3015
+ out : ndarray, optional
3016
+ Alternative output array in which to place the result. It must have
3017
+ the same shape and buffer length as the expected output, but the
3018
+ type (of the output) will be cast if necessary.
3019
+ overwrite_input : bool, optional
3020
+ If True, then allow use of memory of input array (a) for
3021
+ calculations. The input array will be modified by the call to
3022
+ median. This will save memory when you do not need to preserve the
3023
+ contents of the input array. Treat the input as undefined, but it
3024
+ will probably be fully or partially sorted. Default is False. Note
3025
+ that, if `overwrite_input` is True and the input is not already an
3026
+ ndarray, an error will be raised.
3027
+ keepdims : bool, optional
3028
+ If this is set to True, the axes which are reduced are left
3029
+ in the result as dimensions with size one. With this option,
3030
+ the result will broadcast correctly against the original `arr`.
3031
+
3032
+ .. versionadded:: 1.9.0
3033
+
3034
+
3035
+ Returns
3036
+ -------
3037
+ median : ndarray
3038
+ A new array holding the result (unless `out` is specified, in which
3039
+ case that array is returned instead). If the input contains
3040
+ integers, or floats of smaller precision than 64, then the output
3041
+ data-type is float64. Otherwise, the output data-type is the same
3042
+ as that of the input.
3043
+
3044
+ See Also
3045
+ --------
3046
+ mean, percentile
3047
+
3048
+ Notes
3049
+ -----
3050
+ Given a vector V of length N, the median of V is the middle value of
3051
+ a sorted copy of V, ``V_sorted`` - i.e., ``V_sorted[(N-1)/2]``, when N is
3052
+ odd. When N is even, it is the average of the two middle values of
3053
+ ``V_sorted``.
3054
+
3055
+ Examples
3056
+ --------
3057
+ >>> a = np.array([[10, 7, 4], [3, 2, 1]])
3058
+ >>> a
3059
+ array([[10, 7, 4],
3060
+ [ 3, 2, 1]])
3061
+ >>> np.median(a)
3062
+ 3.5
3063
+ >>> np.median(a, axis=0)
3064
+ array([ 6.5, 4.5, 2.5])
3065
+ >>> np.median(a, axis=1)
3066
+ array([ 7., 2.])
3067
+ >>> m = np.median(a, axis=0)
3068
+ >>> out = np.zeros_like(m)
3069
+ >>> np.median(a, axis=0, out=m)
3070
+ array([ 6.5, 4.5, 2.5])
3071
+ >>> m
3072
+ array([ 6.5, 4.5, 2.5])
3073
+ >>> b = a.copy()
3074
+ >>> np.median(b, axis=1, overwrite_input=True)
3075
+ array([ 7., 2.])
3076
+ >>> assert not np.all(a==b)
3077
+ >>> b = a.copy()
3078
+ >>> np.median(b, axis=None, overwrite_input=True)
3079
+ 3.5
3080
+ >>> assert not np.all(a==b)
3081
+
3082
+ """
3083
+ r, k = _ureduce(a, func=_median, axis=axis, out=out,
3084
+ overwrite_input=overwrite_input)
3085
+ if keepdims:
3086
+ return r.reshape(k)
3087
+ else:
3088
+ return r
3089
+
3090
+ def _median(a, axis=None, out=None, overwrite_input=False):
3091
+ # can't be reasonably be implemented in terms of percentile as we have to
3092
+ # call mean to not break astropy
3093
+ a = np.asanyarray(a)
3094
+
3095
+ # Set the partition indexes
3096
+ if axis is None:
3097
+ sz = a.size
3098
+ else:
3099
+ sz = a.shape[axis]
3100
+ if sz % 2 == 0:
3101
+ szh = sz // 2
3102
+ kth = [szh - 1, szh]
3103
+ else:
3104
+ kth = [(sz - 1) // 2]
3105
+ # Check if the array contains any nan's
3106
+ if np.issubdtype(a.dtype, np.inexact):
3107
+ kth.append(-1)
3108
+
3109
+ if overwrite_input:
3110
+ if axis is None:
3111
+ part = a.ravel()
3112
+ part.partition(kth)
3113
+ else:
3114
+ a.partition(kth, axis=axis)
3115
+ part = a
3116
+ else:
3117
+ part = partition(a, kth, axis=axis)
3118
+
3119
+ if part.shape == ():
3120
+ # make 0-D arrays work
3121
+ return part.item()
3122
+ if axis is None:
3123
+ axis = 0
3124
+
3125
+ indexer = [slice(None)] * part.ndim
3126
+ index = part.shape[axis] // 2
3127
+ if part.shape[axis] % 2 == 1:
3128
+ # index with slice to allow mean (below) to work
3129
+ indexer[axis] = slice(index, index+1)
3130
+ else:
3131
+ indexer[axis] = slice(index-1, index+1)
3132
+
3133
+ # Check if the array contains any nan's
3134
+ if np.issubdtype(a.dtype, np.inexact):
3135
+ # warn and return nans like mean would
3136
+ rout = mean(part[indexer], axis=axis, out=out)
3137
+ part = np.rollaxis(part, axis, part.ndim)
3138
+ n = np.isnan(part[..., -1])
3139
+ if rout.ndim == 0:
3140
+ if n == True:
3141
+ warnings.warn("Invalid value encountered in median",
3142
+ RuntimeWarning)
3143
+ if out is not None:
3144
+ out[...] = a.dtype.type(np.nan)
3145
+ rout = out
3146
+ else:
3147
+ rout = a.dtype.type(np.nan)
3148
+ elif np.count_nonzero(n.ravel()) > 0:
3149
+ warnings.warn("Invalid value encountered in median for" +
3150
+ " %d results" % np.count_nonzero(n.ravel()),
3151
+ RuntimeWarning)
3152
+ rout[n] = np.nan
3153
+ return rout
3154
+ else:
3155
+ # if there are no nans
3156
+ # Use mean in odd and even case to coerce data type
3157
+ # and check, use out array.
3158
+ return mean(part[indexer], axis=axis, out=out)
3159
+
3160
+
3161
+ def percentile(a, q, axis=None, out=None,
3162
+ overwrite_input=False, interpolation='linear', keepdims=False):
3163
+ """
3164
+ Compute the qth percentile of the data along the specified axis.
3165
+
3166
+ Returns the qth percentile of the array elements.
3167
+
3168
+ Parameters
3169
+ ----------
3170
+ a : array_like
3171
+ Input array or object that can be converted to an array.
3172
+ q : float in range of [0,100] (or sequence of floats)
3173
+ Percentile to compute which must be between 0 and 100 inclusive.
3174
+ axis : int or sequence of int, optional
3175
+ Axis along which the percentiles are computed. The default (None)
3176
+ is to compute the percentiles along a flattened version of the array.
3177
+ A sequence of axes is supported since version 1.9.0.
3178
+ out : ndarray, optional
3179
+ Alternative output array in which to place the result. It must
3180
+ have the same shape and buffer length as the expected output,
3181
+ but the type (of the output) will be cast if necessary.
3182
+ overwrite_input : bool, optional
3183
+ If True, then allow use of memory of input array `a` for
3184
+ calculations. The input array will be modified by the call to
3185
+ percentile. This will save memory when you do not need to preserve
3186
+ the contents of the input array. In this case you should not make
3187
+ any assumptions about the content of the passed in array `a` after
3188
+ this function completes -- treat it as undefined. Default is False.
3189
+ Note that, if the `a` input is not already an array this parameter
3190
+ will have no effect, `a` will be converted to an array internally
3191
+ regardless of the value of this parameter.
3192
+ interpolation : {'linear', 'lower', 'higher', 'midpoint', 'nearest'}
3193
+ This optional parameter specifies the interpolation method to use,
3194
+ when the desired quantile lies between two data points `i` and `j`:
3195
+ * linear: `i + (j - i) * fraction`, where `fraction` is the
3196
+ fractional part of the index surrounded by `i` and `j`.
3197
+ * lower: `i`.
3198
+ * higher: `j`.
3199
+ * nearest: `i` or `j` whichever is nearest.
3200
+ * midpoint: (`i` + `j`) / 2.
3201
+
3202
+ .. versionadded:: 1.9.0
3203
+ keepdims : bool, optional
3204
+ If this is set to True, the axes which are reduced are left
3205
+ in the result as dimensions with size one. With this option,
3206
+ the result will broadcast correctly against the original array `a`.
3207
+
3208
+ .. versionadded:: 1.9.0
3209
+
3210
+ Returns
3211
+ -------
3212
+ percentile : scalar or ndarray
3213
+ If a single percentile `q` is given and axis=None a scalar is
3214
+ returned. If multiple percentiles `q` are given an array holding
3215
+ the result is returned. The results are listed in the first axis.
3216
+ (If `out` is specified, in which case that array is returned
3217
+ instead). If the input contains integers, or floats of smaller
3218
+ precision than 64, then the output data-type is float64. Otherwise,
3219
+ the output data-type is the same as that of the input.
3220
+
3221
+ See Also
3222
+ --------
3223
+ mean, median
3224
+
3225
+ Notes
3226
+ -----
3227
+ Given a vector V of length N, the q-th percentile of V is the q-th ranked
3228
+ value in a sorted copy of V. The values and distances of the two
3229
+ nearest neighbors as well as the `interpolation` parameter will
3230
+ determine the percentile if the normalized ranking does not match q
3231
+ exactly. This function is the same as the median if ``q=50``, the same
3232
+ as the minimum if ``q=0`` and the same as the maximum if ``q=100``.
3233
+
3234
+ Examples
3235
+ --------
3236
+ >>> a = np.array([[10, 7, 4], [3, 2, 1]])
3237
+ >>> a
3238
+ array([[10, 7, 4],
3239
+ [ 3, 2, 1]])
3240
+ >>> np.percentile(a, 50)
3241
+ array([ 3.5])
3242
+ >>> np.percentile(a, 50, axis=0)
3243
+ array([[ 6.5, 4.5, 2.5]])
3244
+ >>> np.percentile(a, 50, axis=1)
3245
+ array([[ 7.],
3246
+ [ 2.]])
3247
+
3248
+ >>> m = np.percentile(a, 50, axis=0)
3249
+ >>> out = np.zeros_like(m)
3250
+ >>> np.percentile(a, 50, axis=0, out=m)
3251
+ array([[ 6.5, 4.5, 2.5]])
3252
+ >>> m
3253
+ array([[ 6.5, 4.5, 2.5]])
3254
+
3255
+ >>> b = a.copy()
3256
+ >>> np.percentile(b, 50, axis=1, overwrite_input=True)
3257
+ array([[ 7.],
3258
+ [ 2.]])
3259
+ >>> assert not np.all(a==b)
3260
+ >>> b = a.copy()
3261
+ >>> np.percentile(b, 50, axis=None, overwrite_input=True)
3262
+ array([ 3.5])
3263
+
3264
+ """
3265
+ q = array(q, dtype=np.float64, copy=True)
3266
+ r, k = _ureduce(a, func=_percentile, q=q, axis=axis, out=out,
3267
+ overwrite_input=overwrite_input,
3268
+ interpolation=interpolation)
3269
+ if keepdims:
3270
+ if q.ndim == 0:
3271
+ return r.reshape(k)
3272
+ else:
3273
+ return r.reshape([len(q)] + k)
3274
+ else:
3275
+ return r
3276
+
3277
+
3278
+ def _percentile(a, q, axis=None, out=None,
3279
+ overwrite_input=False, interpolation='linear', keepdims=False):
3280
+ a = asarray(a)
3281
+ if q.ndim == 0:
3282
+ # Do not allow 0-d arrays because following code fails for scalar
3283
+ zerod = True
3284
+ q = q[None]
3285
+ else:
3286
+ zerod = False
3287
+
3288
+ # avoid expensive reductions, relevant for arrays with < O(1000) elements
3289
+ if q.size < 10:
3290
+ for i in range(q.size):
3291
+ if q[i] < 0. or q[i] > 100.:
3292
+ raise ValueError("Percentiles must be in the range [0,100]")
3293
+ q[i] /= 100.
3294
+ else:
3295
+ # faster than any()
3296
+ if np.count_nonzero(q < 0.) or np.count_nonzero(q > 100.):
3297
+ raise ValueError("Percentiles must be in the range [0,100]")
3298
+ q /= 100.
3299
+
3300
+ # prepare a for partioning
3301
+ if overwrite_input:
3302
+ if axis is None:
3303
+ ap = a.ravel()
3304
+ else:
3305
+ ap = a
3306
+ else:
3307
+ if axis is None:
3308
+ ap = a.flatten()
3309
+ else:
3310
+ ap = a.copy()
3311
+
3312
+ if axis is None:
3313
+ axis = 0
3314
+
3315
+ Nx = ap.shape[axis]
3316
+ indices = q * (Nx - 1)
3317
+
3318
+ # round fractional indices according to interpolation method
3319
+ if interpolation == 'lower':
3320
+ indices = floor(indices).astype(intp)
3321
+ elif interpolation == 'higher':
3322
+ indices = ceil(indices).astype(intp)
3323
+ elif interpolation == 'midpoint':
3324
+ indices = floor(indices) + 0.5
3325
+ elif interpolation == 'nearest':
3326
+ indices = around(indices).astype(intp)
3327
+ elif interpolation == 'linear':
3328
+ pass # keep index as fraction and interpolate
3329
+ else:
3330
+ raise ValueError(
3331
+ "interpolation can only be 'linear', 'lower' 'higher', "
3332
+ "'midpoint', or 'nearest'")
3333
+
3334
+ n = np.array(False, dtype=bool) # check for nan's flag
3335
+ if indices.dtype == intp: # take the points along axis
3336
+ # Check if the array contains any nan's
3337
+ if np.issubdtype(a.dtype, np.inexact):
3338
+ indices = concatenate((indices, [-1]))
3339
+
3340
+ ap.partition(indices, axis=axis)
3341
+ # ensure axis with qth is first
3342
+ ap = np.rollaxis(ap, axis, 0)
3343
+ axis = 0
3344
+
3345
+ # Check if the array contains any nan's
3346
+ if np.issubdtype(a.dtype, np.inexact):
3347
+ indices = indices[:-1]
3348
+ n = np.isnan(ap[-1:, ...])
3349
+
3350
+ if zerod:
3351
+ indices = indices[0]
3352
+ r = take(ap, indices, axis=axis, out=out)
3353
+
3354
+
3355
+ else: # weight the points above and below the indices
3356
+ indices_below = floor(indices).astype(intp)
3357
+ indices_above = indices_below + 1
3358
+ indices_above[indices_above > Nx - 1] = Nx - 1
3359
+
3360
+ # Check if the array contains any nan's
3361
+ if np.issubdtype(a.dtype, np.inexact):
3362
+ indices_above = concatenate((indices_above, [-1]))
3363
+
3364
+ weights_above = indices - indices_below
3365
+ weights_below = 1.0 - weights_above
3366
+
3367
+ weights_shape = [1, ] * ap.ndim
3368
+ weights_shape[axis] = len(indices)
3369
+ weights_below.shape = weights_shape
3370
+ weights_above.shape = weights_shape
3371
+
3372
+ ap.partition(concatenate((indices_below, indices_above)), axis=axis)
3373
+
3374
+ # ensure axis with qth is first
3375
+ ap = np.rollaxis(ap, axis, 0)
3376
+ weights_below = np.rollaxis(weights_below, axis, 0)
3377
+ weights_above = np.rollaxis(weights_above, axis, 0)
3378
+ axis = 0
3379
+
3380
+ # Check if the array contains any nan's
3381
+ if np.issubdtype(a.dtype, np.inexact):
3382
+ indices_above = indices_above[:-1]
3383
+ n = np.isnan(ap[-1:, ...])
3384
+
3385
+ x1 = take(ap, indices_below, axis=axis) * weights_below
3386
+ x2 = take(ap, indices_above, axis=axis) * weights_above
3387
+
3388
+ # ensure axis with qth is first
3389
+ x1 = np.rollaxis(x1, axis, 0)
3390
+ x2 = np.rollaxis(x2, axis, 0)
3391
+
3392
+ if zerod:
3393
+ x1 = x1.squeeze(0)
3394
+ x2 = x2.squeeze(0)
3395
+
3396
+ if out is not None:
3397
+ r = add(x1, x2, out=out)
3398
+ else:
3399
+ r = add(x1, x2)
3400
+
3401
+ if np.any(n):
3402
+ warnings.warn("Invalid value encountered in median",
3403
+ RuntimeWarning)
3404
+ if zerod:
3405
+ if ap.ndim == 1:
3406
+ if out is not None:
3407
+ out[...] = a.dtype.type(np.nan)
3408
+ r = out
3409
+ else:
3410
+ r = a.dtype.type(np.nan)
3411
+ else:
3412
+ r[..., n.squeeze(0)] = a.dtype.type(np.nan)
3413
+ else:
3414
+ if r.ndim == 1:
3415
+ r[:] = a.dtype.type(np.nan)
3416
+ else:
3417
+ r[..., n.repeat(q.size, 0)] = a.dtype.type(np.nan)
3418
+
3419
+ return r
3420
+
3421
+
3422
+ def trapz(y, x=None, dx=1.0, axis=-1):
3423
+ """
3424
+ Integrate along the given axis using the composite trapezoidal rule.
3425
+
3426
+ Integrate `y` (`x`) along given axis.
3427
+
3428
+ Parameters
3429
+ ----------
3430
+ y : array_like
3431
+ Input array to integrate.
3432
+ x : array_like, optional
3433
+ If `x` is None, then spacing between all `y` elements is `dx`.
3434
+ dx : scalar, optional
3435
+ If `x` is None, spacing given by `dx` is assumed. Default is 1.
3436
+ axis : int, optional
3437
+ Specify the axis.
3438
+
3439
+ Returns
3440
+ -------
3441
+ trapz : float
3442
+ Definite integral as approximated by trapezoidal rule.
3443
+
3444
+ See Also
3445
+ --------
3446
+ sum, cumsum
3447
+
3448
+ Notes
3449
+ -----
3450
+ Image [2]_ illustrates trapezoidal rule -- y-axis locations of points
3451
+ will be taken from `y` array, by default x-axis distances between
3452
+ points will be 1.0, alternatively they can be provided with `x` array
3453
+ or with `dx` scalar. Return value will be equal to combined area under
3454
+ the red lines.
3455
+
3456
+
3457
+ References
3458
+ ----------
3459
+ .. [1] Wikipedia page: http://en.wikipedia.org/wiki/Trapezoidal_rule
3460
+
3461
+ .. [2] Illustration image:
3462
+ http://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png
3463
+
3464
+ Examples
3465
+ --------
3466
+ >>> np.trapz([1,2,3])
3467
+ 4.0
3468
+ >>> np.trapz([1,2,3], x=[4,6,8])
3469
+ 8.0
3470
+ >>> np.trapz([1,2,3], dx=2)
3471
+ 8.0
3472
+ >>> a = np.arange(6).reshape(2, 3)
3473
+ >>> a
3474
+ array([[0, 1, 2],
3475
+ [3, 4, 5]])
3476
+ >>> np.trapz(a, axis=0)
3477
+ array([ 1.5, 2.5, 3.5])
3478
+ >>> np.trapz(a, axis=1)
3479
+ array([ 2., 8.])
3480
+
3481
+ """
3482
+ y = asanyarray(y)
3483
+ if x is None:
3484
+ d = dx
3485
+ else:
3486
+ x = asanyarray(x)
3487
+ if x.ndim == 1:
3488
+ d = diff(x)
3489
+ # reshape to correct shape
3490
+ shape = [1]*y.ndim
3491
+ shape[axis] = d.shape[0]
3492
+ d = d.reshape(shape)
3493
+ else:
3494
+ d = diff(x, axis=axis)
3495
+ nd = len(y.shape)
3496
+ slice1 = [slice(None)]*nd
3497
+ slice2 = [slice(None)]*nd
3498
+ slice1[axis] = slice(1, None)
3499
+ slice2[axis] = slice(None, -1)
3500
+ try:
3501
+ ret = (d * (y[slice1] + y[slice2]) / 2.0).sum(axis)
3502
+ except ValueError:
3503
+ # Operations didn't work, cast to ndarray
3504
+ d = np.asarray(d)
3505
+ y = np.asarray(y)
3506
+ ret = add.reduce(d * (y[slice1]+y[slice2])/2.0, axis)
3507
+ return ret
3508
+
3509
+
3510
+ #always succeed
3511
+ def add_newdoc(place, obj, doc):
3512
+ """Adds documentation to obj which is in module place.
3513
+
3514
+ If doc is a string add it to obj as a docstring
3515
+
3516
+ If doc is a tuple, then the first element is interpreted as
3517
+ an attribute of obj and the second as the docstring
3518
+ (method, docstring)
3519
+
3520
+ If doc is a list, then each element of the list should be a
3521
+ sequence of length two --> [(method1, docstring1),
3522
+ (method2, docstring2), ...]
3523
+
3524
+ This routine never raises an error.
3525
+
3526
+ This routine cannot modify read-only docstrings, as appear
3527
+ in new-style classes or built-in functions. Because this
3528
+ routine never raises an error the caller must check manually
3529
+ that the docstrings were changed.
3530
+ """
3531
+ try:
3532
+ new = getattr(__import__(place, globals(), {}, [obj]), obj)
3533
+ if isinstance(doc, str):
3534
+ add_docstring(new, doc.strip())
3535
+ elif isinstance(doc, tuple):
3536
+ add_docstring(getattr(new, doc[0]), doc[1].strip())
3537
+ elif isinstance(doc, list):
3538
+ for val in doc:
3539
+ add_docstring(getattr(new, val[0]), val[1].strip())
3540
+ except:
3541
+ pass
3542
+
3543
+
3544
+ # Based on scitools meshgrid
3545
+ def meshgrid(*xi, **kwargs):
3546
+ """
3547
+ Return coordinate matrices from coordinate vectors.
3548
+
3549
+ Make N-D coordinate arrays for vectorized evaluations of
3550
+ N-D scalar/vector fields over N-D grids, given
3551
+ one-dimensional coordinate arrays x1, x2,..., xn.
3552
+
3553
+ .. versionchanged:: 1.9
3554
+ 1-D and 0-D cases are allowed.
3555
+
3556
+ Parameters
3557
+ ----------
3558
+ x1, x2,..., xn : array_like
3559
+ 1-D arrays representing the coordinates of a grid.
3560
+ indexing : {'xy', 'ij'}, optional
3561
+ Cartesian ('xy', default) or matrix ('ij') indexing of output.
3562
+ See Notes for more details.
3563
+
3564
+ .. versionadded:: 1.7.0
3565
+ sparse : bool, optional
3566
+ If True a sparse grid is returned in order to conserve memory.
3567
+ Default is False.
3568
+
3569
+ .. versionadded:: 1.7.0
3570
+ copy : bool, optional
3571
+ If False, a view into the original arrays are returned in order to
3572
+ conserve memory. Default is True. Please note that
3573
+ ``sparse=False, copy=False`` will likely return non-contiguous
3574
+ arrays. Furthermore, more than one element of a broadcast array
3575
+ may refer to a single memory location. If you need to write to the
3576
+ arrays, make copies first.
3577
+
3578
+ .. versionadded:: 1.7.0
3579
+
3580
+ Returns
3581
+ -------
3582
+ X1, X2,..., XN : ndarray
3583
+ For vectors `x1`, `x2`,..., 'xn' with lengths ``Ni=len(xi)`` ,
3584
+ return ``(N1, N2, N3,...Nn)`` shaped arrays if indexing='ij'
3585
+ or ``(N2, N1, N3,...Nn)`` shaped arrays if indexing='xy'
3586
+ with the elements of `xi` repeated to fill the matrix along
3587
+ the first dimension for `x1`, the second for `x2` and so on.
3588
+
3589
+ Notes
3590
+ -----
3591
+ This function supports both indexing conventions through the indexing
3592
+ keyword argument. Giving the string 'ij' returns a meshgrid with
3593
+ matrix indexing, while 'xy' returns a meshgrid with Cartesian indexing.
3594
+ In the 2-D case with inputs of length M and N, the outputs are of shape
3595
+ (N, M) for 'xy' indexing and (M, N) for 'ij' indexing. In the 3-D case
3596
+ with inputs of length M, N and P, outputs are of shape (N, M, P) for
3597
+ 'xy' indexing and (M, N, P) for 'ij' indexing. The difference is
3598
+ illustrated by the following code snippet::
3599
+
3600
+ xv, yv = meshgrid(x, y, sparse=False, indexing='ij')
3601
+ for i in range(nx):
3602
+ for j in range(ny):
3603
+ # treat xv[i,j], yv[i,j]
3604
+
3605
+ xv, yv = meshgrid(x, y, sparse=False, indexing='xy')
3606
+ for i in range(nx):
3607
+ for j in range(ny):
3608
+ # treat xv[j,i], yv[j,i]
3609
+
3610
+ In the 1-D and 0-D case, the indexing and sparse keywords have no effect.
3611
+
3612
+ See Also
3613
+ --------
3614
+ index_tricks.mgrid : Construct a multi-dimensional "meshgrid"
3615
+ using indexing notation.
3616
+ index_tricks.ogrid : Construct an open multi-dimensional "meshgrid"
3617
+ using indexing notation.
3618
+
3619
+ Examples
3620
+ --------
3621
+ >>> nx, ny = (3, 2)
3622
+ >>> x = np.linspace(0, 1, nx)
3623
+ >>> y = np.linspace(0, 1, ny)
3624
+ >>> xv, yv = meshgrid(x, y)
3625
+ >>> xv
3626
+ array([[ 0. , 0.5, 1. ],
3627
+ [ 0. , 0.5, 1. ]])
3628
+ >>> yv
3629
+ array([[ 0., 0., 0.],
3630
+ [ 1., 1., 1.]])
3631
+ >>> xv, yv = meshgrid(x, y, sparse=True) # make sparse output arrays
3632
+ >>> xv
3633
+ array([[ 0. , 0.5, 1. ]])
3634
+ >>> yv
3635
+ array([[ 0.],
3636
+ [ 1.]])
3637
+
3638
+ `meshgrid` is very useful to evaluate functions on a grid.
3639
+
3640
+ >>> x = np.arange(-5, 5, 0.1)
3641
+ >>> y = np.arange(-5, 5, 0.1)
3642
+ >>> xx, yy = meshgrid(x, y, sparse=True)
3643
+ >>> z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
3644
+ >>> h = plt.contourf(x,y,z)
3645
+
3646
+ """
3647
+ ndim = len(xi)
3648
+
3649
+ copy_ = kwargs.pop('copy', True)
3650
+ sparse = kwargs.pop('sparse', False)
3651
+ indexing = kwargs.pop('indexing', 'xy')
3652
+
3653
+ if kwargs:
3654
+ raise TypeError("meshgrid() got an unexpected keyword argument '%s'"
3655
+ % (list(kwargs)[0],))
3656
+
3657
+ if indexing not in ['xy', 'ij']:
3658
+ raise ValueError(
3659
+ "Valid values for `indexing` are 'xy' and 'ij'.")
3660
+
3661
+ s0 = (1,) * ndim
3662
+ output = [np.asanyarray(x).reshape(s0[:i] + (-1,) + s0[i + 1::])
3663
+ for i, x in enumerate(xi)]
3664
+
3665
+ shape = [x.size for x in output]
3666
+
3667
+ if indexing == 'xy' and ndim > 1:
3668
+ # switch first and second axis
3669
+ output[0].shape = (1, -1) + (1,)*(ndim - 2)
3670
+ output[1].shape = (-1, 1) + (1,)*(ndim - 2)
3671
+ shape[0], shape[1] = shape[1], shape[0]
3672
+
3673
+ if sparse:
3674
+ if copy_:
3675
+ return [x.copy() for x in output]
3676
+ else:
3677
+ return output
3678
+ else:
3679
+ # Return the full N-D matrix (not only the 1-D vector)
3680
+ if copy_:
3681
+ mult_fact = np.ones(shape, dtype=int)
3682
+ return [x * mult_fact for x in output]
3683
+ else:
3684
+ return np.broadcast_arrays(*output)
3685
+
3686
+
3687
+ def delete(arr, obj, axis=None):
3688
+ """
3689
+ Return a new array with sub-arrays along an axis deleted. For a one
3690
+ dimensional array, this returns those entries not returned by
3691
+ `arr[obj]`.
3692
+
3693
+ Parameters
3694
+ ----------
3695
+ arr : array_like
3696
+ Input array.
3697
+ obj : slice, int or array of ints
3698
+ Indicate which sub-arrays to remove.
3699
+ axis : int, optional
3700
+ The axis along which to delete the subarray defined by `obj`.
3701
+ If `axis` is None, `obj` is applied to the flattened array.
3702
+
3703
+ Returns
3704
+ -------
3705
+ out : ndarray
3706
+ A copy of `arr` with the elements specified by `obj` removed. Note
3707
+ that `delete` does not occur in-place. If `axis` is None, `out` is
3708
+ a flattened array.
3709
+
3710
+ See Also
3711
+ --------
3712
+ insert : Insert elements into an array.
3713
+ append : Append elements at the end of an array.
3714
+
3715
+ Notes
3716
+ -----
3717
+ Often it is preferable to use a boolean mask. For example:
3718
+
3719
+ >>> mask = np.ones(len(arr), dtype=bool)
3720
+ >>> mask[[0,2,4]] = False
3721
+ >>> result = arr[mask,...]
3722
+
3723
+ Is equivalent to `np.delete(arr, [0,2,4], axis=0)`, but allows further
3724
+ use of `mask`.
3725
+
3726
+ Examples
3727
+ --------
3728
+ >>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
3729
+ >>> arr
3730
+ array([[ 1, 2, 3, 4],
3731
+ [ 5, 6, 7, 8],
3732
+ [ 9, 10, 11, 12]])
3733
+ >>> np.delete(arr, 1, 0)
3734
+ array([[ 1, 2, 3, 4],
3735
+ [ 9, 10, 11, 12]])
3736
+
3737
+ >>> np.delete(arr, np.s_[::2], 1)
3738
+ array([[ 2, 4],
3739
+ [ 6, 8],
3740
+ [10, 12]])
3741
+ >>> np.delete(arr, [1,3,5], None)
3742
+ array([ 1, 3, 5, 7, 8, 9, 10, 11, 12])
3743
+
3744
+ """
3745
+ wrap = None
3746
+ if type(arr) is not ndarray:
3747
+ try:
3748
+ wrap = arr.__array_wrap__
3749
+ except AttributeError:
3750
+ pass
3751
+
3752
+ arr = asarray(arr)
3753
+ ndim = arr.ndim
3754
+ if axis is None:
3755
+ if ndim != 1:
3756
+ arr = arr.ravel()
3757
+ ndim = arr.ndim
3758
+ axis = ndim - 1
3759
+ if ndim == 0:
3760
+ # 2013-09-24, 1.9
3761
+ warnings.warn(
3762
+ "in the future the special handling of scalars will be removed "
3763
+ "from delete and raise an error", DeprecationWarning)
3764
+ if wrap:
3765
+ return wrap(arr)
3766
+ else:
3767
+ return arr.copy()
3768
+
3769
+ slobj = [slice(None)]*ndim
3770
+ N = arr.shape[axis]
3771
+ newshape = list(arr.shape)
3772
+
3773
+ if isinstance(obj, slice):
3774
+ start, stop, step = obj.indices(N)
3775
+ xr = range(start, stop, step)
3776
+ numtodel = len(xr)
3777
+
3778
+ if numtodel <= 0:
3779
+ if wrap:
3780
+ return wrap(arr.copy())
3781
+ else:
3782
+ return arr.copy()
3783
+
3784
+ # Invert if step is negative:
3785
+ if step < 0:
3786
+ step = -step
3787
+ start = xr[-1]
3788
+ stop = xr[0] + 1
3789
+
3790
+ newshape[axis] -= numtodel
3791
+ new = empty(newshape, arr.dtype, arr.flags.fnc)
3792
+ # copy initial chunk
3793
+ if start == 0:
3794
+ pass
3795
+ else:
3796
+ slobj[axis] = slice(None, start)
3797
+ new[slobj] = arr[slobj]
3798
+ # copy end chunck
3799
+ if stop == N:
3800
+ pass
3801
+ else:
3802
+ slobj[axis] = slice(stop-numtodel, None)
3803
+ slobj2 = [slice(None)]*ndim
3804
+ slobj2[axis] = slice(stop, None)
3805
+ new[slobj] = arr[slobj2]
3806
+ # copy middle pieces
3807
+ if step == 1:
3808
+ pass
3809
+ else: # use array indexing.
3810
+ keep = ones(stop-start, dtype=bool)
3811
+ keep[:stop-start:step] = False
3812
+ slobj[axis] = slice(start, stop-numtodel)
3813
+ slobj2 = [slice(None)]*ndim
3814
+ slobj2[axis] = slice(start, stop)
3815
+ arr = arr[slobj2]
3816
+ slobj2[axis] = keep
3817
+ new[slobj] = arr[slobj2]
3818
+ if wrap:
3819
+ return wrap(new)
3820
+ else:
3821
+ return new
3822
+
3823
+ _obj = obj
3824
+ obj = np.asarray(obj)
3825
+ # After removing the special handling of booleans and out of
3826
+ # bounds values, the conversion to the array can be removed.
3827
+ if obj.dtype == bool:
3828
+ warnings.warn(
3829
+ "in the future insert will treat boolean arrays and array-likes "
3830
+ "as boolean index instead of casting it to integer", FutureWarning)
3831
+ obj = obj.astype(intp)
3832
+ if isinstance(_obj, (int, long, integer)):
3833
+ # optimization for a single value
3834
+ obj = obj.item()
3835
+ if (obj < -N or obj >= N):
3836
+ raise IndexError(
3837
+ "index %i is out of bounds for axis %i with "
3838
+ "size %i" % (obj, axis, N))
3839
+ if (obj < 0):
3840
+ obj += N
3841
+ newshape[axis] -= 1
3842
+ new = empty(newshape, arr.dtype, arr.flags.fnc)
3843
+ slobj[axis] = slice(None, obj)
3844
+ new[slobj] = arr[slobj]
3845
+ slobj[axis] = slice(obj, None)
3846
+ slobj2 = [slice(None)]*ndim
3847
+ slobj2[axis] = slice(obj+1, None)
3848
+ new[slobj] = arr[slobj2]
3849
+ else:
3850
+ if obj.size == 0 and not isinstance(_obj, np.ndarray):
3851
+ obj = obj.astype(intp)
3852
+ if not np.can_cast(obj, intp, 'same_kind'):
3853
+ # obj.size = 1 special case always failed and would just
3854
+ # give superfluous warnings.
3855
+ # 2013-09-24, 1.9
3856
+ warnings.warn(
3857
+ "using a non-integer array as obj in delete will result in an "
3858
+ "error in the future", DeprecationWarning)
3859
+ obj = obj.astype(intp)
3860
+ keep = ones(N, dtype=bool)
3861
+
3862
+ # Test if there are out of bound indices, this is deprecated
3863
+ inside_bounds = (obj < N) & (obj >= -N)
3864
+ if not inside_bounds.all():
3865
+ # 2013-09-24, 1.9
3866
+ warnings.warn(
3867
+ "in the future out of bounds indices will raise an error "
3868
+ "instead of being ignored by `numpy.delete`.",
3869
+ DeprecationWarning)
3870
+ obj = obj[inside_bounds]
3871
+ positive_indices = obj >= 0
3872
+ if not positive_indices.all():
3873
+ warnings.warn(
3874
+ "in the future negative indices will not be ignored by "
3875
+ "`numpy.delete`.", FutureWarning)
3876
+ obj = obj[positive_indices]
3877
+
3878
+ keep[obj, ] = False
3879
+ slobj[axis] = keep
3880
+ new = arr[slobj]
3881
+
3882
+ if wrap:
3883
+ return wrap(new)
3884
+ else:
3885
+ return new
3886
+
3887
+
3888
+ def insert(arr, obj, values, axis=None):
3889
+ """
3890
+ Insert values along the given axis before the given indices.
3891
+
3892
+ Parameters
3893
+ ----------
3894
+ arr : array_like
3895
+ Input array.
3896
+ obj : int, slice or sequence of ints
3897
+ Object that defines the index or indices before which `values` is
3898
+ inserted.
3899
+
3900
+ .. versionadded:: 1.8.0
3901
+
3902
+ Support for multiple insertions when `obj` is a single scalar or a
3903
+ sequence with one element (similar to calling insert multiple
3904
+ times).
3905
+ values : array_like
3906
+ Values to insert into `arr`. If the type of `values` is different
3907
+ from that of `arr`, `values` is converted to the type of `arr`.
3908
+ `values` should be shaped so that ``arr[...,obj,...] = values``
3909
+ is legal.
3910
+ axis : int, optional
3911
+ Axis along which to insert `values`. If `axis` is None then `arr`
3912
+ is flattened first.
3913
+
3914
+ Returns
3915
+ -------
3916
+ out : ndarray
3917
+ A copy of `arr` with `values` inserted. Note that `insert`
3918
+ does not occur in-place: a new array is returned. If
3919
+ `axis` is None, `out` is a flattened array.
3920
+
3921
+ See Also
3922
+ --------
3923
+ append : Append elements at the end of an array.
3924
+ concatenate : Join a sequence of arrays along an existing axis.
3925
+ delete : Delete elements from an array.
3926
+
3927
+ Notes
3928
+ -----
3929
+ Note that for higher dimensional inserts `obj=0` behaves very different
3930
+ from `obj=[0]` just like `arr[:,0,:] = values` is different from
3931
+ `arr[:,[0],:] = values`.
3932
+
3933
+ Examples
3934
+ --------
3935
+ >>> a = np.array([[1, 1], [2, 2], [3, 3]])
3936
+ >>> a
3937
+ array([[1, 1],
3938
+ [2, 2],
3939
+ [3, 3]])
3940
+ >>> np.insert(a, 1, 5)
3941
+ array([1, 5, 1, 2, 2, 3, 3])
3942
+ >>> np.insert(a, 1, 5, axis=1)
3943
+ array([[1, 5, 1],
3944
+ [2, 5, 2],
3945
+ [3, 5, 3]])
3946
+
3947
+ Difference between sequence and scalars:
3948
+
3949
+ >>> np.insert(a, [1], [[1],[2],[3]], axis=1)
3950
+ array([[1, 1, 1],
3951
+ [2, 2, 2],
3952
+ [3, 3, 3]])
3953
+ >>> np.array_equal(np.insert(a, 1, [1, 2, 3], axis=1),
3954
+ ... np.insert(a, [1], [[1],[2],[3]], axis=1))
3955
+ True
3956
+
3957
+ >>> b = a.flatten()
3958
+ >>> b
3959
+ array([1, 1, 2, 2, 3, 3])
3960
+ >>> np.insert(b, [2, 2], [5, 6])
3961
+ array([1, 1, 5, 6, 2, 2, 3, 3])
3962
+
3963
+ >>> np.insert(b, slice(2, 4), [5, 6])
3964
+ array([1, 1, 5, 2, 6, 2, 3, 3])
3965
+
3966
+ >>> np.insert(b, [2, 2], [7.13, False]) # type casting
3967
+ array([1, 1, 7, 0, 2, 2, 3, 3])
3968
+
3969
+ >>> x = np.arange(8).reshape(2, 4)
3970
+ >>> idx = (1, 3)
3971
+ >>> np.insert(x, idx, 999, axis=1)
3972
+ array([[ 0, 999, 1, 2, 999, 3],
3973
+ [ 4, 999, 5, 6, 999, 7]])
3974
+
3975
+ """
3976
+ wrap = None
3977
+ if type(arr) is not ndarray:
3978
+ try:
3979
+ wrap = arr.__array_wrap__
3980
+ except AttributeError:
3981
+ pass
3982
+
3983
+ arr = asarray(arr)
3984
+ ndim = arr.ndim
3985
+ if axis is None:
3986
+ if ndim != 1:
3987
+ arr = arr.ravel()
3988
+ ndim = arr.ndim
3989
+ axis = ndim - 1
3990
+ else:
3991
+ if ndim > 0 and (axis < -ndim or axis >= ndim):
3992
+ raise IndexError(
3993
+ "axis %i is out of bounds for an array of "
3994
+ "dimension %i" % (axis, ndim))
3995
+ if (axis < 0):
3996
+ axis += ndim
3997
+ if (ndim == 0):
3998
+ # 2013-09-24, 1.9
3999
+ warnings.warn(
4000
+ "in the future the special handling of scalars will be removed "
4001
+ "from insert and raise an error", DeprecationWarning)
4002
+ arr = arr.copy()
4003
+ arr[...] = values
4004
+ if wrap:
4005
+ return wrap(arr)
4006
+ else:
4007
+ return arr
4008
+ slobj = [slice(None)]*ndim
4009
+ N = arr.shape[axis]
4010
+ newshape = list(arr.shape)
4011
+
4012
+ if isinstance(obj, slice):
4013
+ # turn it into a range object
4014
+ indices = arange(*obj.indices(N), **{'dtype': intp})
4015
+ else:
4016
+ # need to copy obj, because indices will be changed in-place
4017
+ indices = np.array(obj)
4018
+ if indices.dtype == bool:
4019
+ # See also delete
4020
+ warnings.warn(
4021
+ "in the future insert will treat boolean arrays and "
4022
+ "array-likes as a boolean index instead of casting it to "
4023
+ "integer", FutureWarning)
4024
+ indices = indices.astype(intp)
4025
+ # Code after warning period:
4026
+ #if obj.ndim != 1:
4027
+ # raise ValueError('boolean array argument obj to insert '
4028
+ # 'must be one dimensional')
4029
+ #indices = np.flatnonzero(obj)
4030
+ elif indices.ndim > 1:
4031
+ raise ValueError(
4032
+ "index array argument obj to insert must be one dimensional "
4033
+ "or scalar")
4034
+ if indices.size == 1:
4035
+ index = indices.item()
4036
+ if index < -N or index > N:
4037
+ raise IndexError(
4038
+ "index %i is out of bounds for axis %i with "
4039
+ "size %i" % (obj, axis, N))
4040
+ if (index < 0):
4041
+ index += N
4042
+
4043
+ # There are some object array corner cases here, but we cannot avoid
4044
+ # that:
4045
+ values = array(values, copy=False, ndmin=arr.ndim, dtype=arr.dtype)
4046
+ if indices.ndim == 0:
4047
+ # broadcasting is very different here, since a[:,0,:] = ... behaves
4048
+ # very different from a[:,[0],:] = ...! This changes values so that
4049
+ # it works likes the second case. (here a[:,0:1,:])
4050
+ values = np.rollaxis(values, 0, (axis % values.ndim) + 1)
4051
+ numnew = values.shape[axis]
4052
+ newshape[axis] += numnew
4053
+ new = empty(newshape, arr.dtype, arr.flags.fnc)
4054
+ slobj[axis] = slice(None, index)
4055
+ new[slobj] = arr[slobj]
4056
+ slobj[axis] = slice(index, index+numnew)
4057
+ new[slobj] = values
4058
+ slobj[axis] = slice(index+numnew, None)
4059
+ slobj2 = [slice(None)] * ndim
4060
+ slobj2[axis] = slice(index, None)
4061
+ new[slobj] = arr[slobj2]
4062
+ if wrap:
4063
+ return wrap(new)
4064
+ return new
4065
+ elif indices.size == 0 and not isinstance(obj, np.ndarray):
4066
+ # Can safely cast the empty list to intp
4067
+ indices = indices.astype(intp)
4068
+
4069
+ if not np.can_cast(indices, intp, 'same_kind'):
4070
+ # 2013-09-24, 1.9
4071
+ warnings.warn(
4072
+ "using a non-integer array as obj in insert will result in an "
4073
+ "error in the future", DeprecationWarning)
4074
+ indices = indices.astype(intp)
4075
+
4076
+ indices[indices < 0] += N
4077
+
4078
+ numnew = len(indices)
4079
+ order = indices.argsort(kind='mergesort') # stable sort
4080
+ indices[order] += np.arange(numnew)
4081
+
4082
+ newshape[axis] += numnew
4083
+ old_mask = ones(newshape[axis], dtype=bool)
4084
+ old_mask[indices] = False
4085
+
4086
+ new = empty(newshape, arr.dtype, arr.flags.fnc)
4087
+ slobj2 = [slice(None)]*ndim
4088
+ slobj[axis] = indices
4089
+ slobj2[axis] = old_mask
4090
+ new[slobj] = values
4091
+ new[slobj2] = arr
4092
+
4093
+ if wrap:
4094
+ return wrap(new)
4095
+ return new
4096
+
4097
+
4098
+ def append(arr, values, axis=None):
4099
+ """
4100
+ Append values to the end of an array.
4101
+
4102
+ Parameters
4103
+ ----------
4104
+ arr : array_like
4105
+ Values are appended to a copy of this array.
4106
+ values : array_like
4107
+ These values are appended to a copy of `arr`. It must be of the
4108
+ correct shape (the same shape as `arr`, excluding `axis`). If
4109
+ `axis` is not specified, `values` can be any shape and will be
4110
+ flattened before use.
4111
+ axis : int, optional
4112
+ The axis along which `values` are appended. If `axis` is not
4113
+ given, both `arr` and `values` are flattened before use.
4114
+
4115
+ Returns
4116
+ -------
4117
+ append : ndarray
4118
+ A copy of `arr` with `values` appended to `axis`. Note that
4119
+ `append` does not occur in-place: a new array is allocated and
4120
+ filled. If `axis` is None, `out` is a flattened array.
4121
+
4122
+ See Also
4123
+ --------
4124
+ insert : Insert elements into an array.
4125
+ delete : Delete elements from an array.
4126
+
4127
+ Examples
4128
+ --------
4129
+ >>> np.append([1, 2, 3], [[4, 5, 6], [7, 8, 9]])
4130
+ array([1, 2, 3, 4, 5, 6, 7, 8, 9])
4131
+
4132
+ When `axis` is specified, `values` must have the correct shape.
4133
+
4134
+ >>> np.append([[1, 2, 3], [4, 5, 6]], [[7, 8, 9]], axis=0)
4135
+ array([[1, 2, 3],
4136
+ [4, 5, 6],
4137
+ [7, 8, 9]])
4138
+ >>> np.append([[1, 2, 3], [4, 5, 6]], [7, 8, 9], axis=0)
4139
+ Traceback (most recent call last):
4140
+ ...
4141
+ ValueError: arrays must have same number of dimensions
4142
+
4143
+ """
4144
+ arr = asanyarray(arr)
4145
+ if axis is None:
4146
+ if arr.ndim != 1:
4147
+ arr = arr.ravel()
4148
+ values = ravel(values)
4149
+ axis = arr.ndim-1
4150
+ return concatenate((arr, values), axis=axis)