numpy 1.9.2__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 (1593) 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/scipy-sphinx-theme/.git +1 -0
  12. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  13. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  16. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  17. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  23. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  31. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  32. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  33. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  39. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  41. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  42. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  43. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  45. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  49. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  50. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  51. numpy-1.10.0.post2/doc/sphinxext/.git +1 -0
  52. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  56. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  57. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  58. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  59. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  60. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  61. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  62. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  63. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  64. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  65. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  66. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  70. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  71. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  72. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  73. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  74. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  75. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  82. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  83. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  84. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  85. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  86. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  87. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  88. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  89. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  90. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  91. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  138. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  139. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  142. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  143. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  147. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  148. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  154. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  155. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  165. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  166. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  197. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  198. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  199. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  200. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  204. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  205. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  206. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  210. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  211. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  212. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  213. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  214. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  215. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  216. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  217. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  218. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  219. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  230. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  231. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  232. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  233. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  234. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  235. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  236. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  237. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  238. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  239. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  240. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  241. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  242. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  243. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  244. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  245. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  246. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  247. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  248. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  249. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  250. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  251. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  252. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  253. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  254. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  267. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  268. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  269. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  272. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  273. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  274. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  275. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  276. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  277. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  278. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  279. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  280. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  281. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  282. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  283. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  284. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  285. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  286. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  287. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  288. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  289. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  290. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  291. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  292. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  293. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  313. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  314. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  315. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  316. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  317. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  318. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  319. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  320. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  322. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  323. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  324. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  325. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  326. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  327. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  328. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  329. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  330. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  335. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  336. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  337. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  338. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  339. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  343. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  344. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  345. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  346. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  347. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  348. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  349. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  350. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  351. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  353. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  354. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  355. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  356. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  357. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  358. numpy-1.10.0.post2/numpy/setup.py +29 -0
  359. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  360. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  361. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  362. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  363. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  364. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  365. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  366. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  367. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  368. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  369. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  370. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  371. numpy-1.10.0.post2/numpy/version.py +10 -0
  372. numpy-1.10.0.post2/setup.py +260 -0
  373. numpy-1.10.0.post2/site.cfg.example +193 -0
  374. numpy-1.10.0.post2/tmp.txt +789 -0
  375. numpy-1.10.0.post2/tools/swig/README +145 -0
  376. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  377. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  378. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  379. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  382. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  383. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  384. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  385. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  387. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  388. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  389. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  390. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  391. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  392. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  393. numpy-1.9.2/INSTALL.txt +0 -138
  394. numpy-1.9.2/LICENSE.txt +0 -30
  395. numpy-1.9.2/MANIFEST.in +0 -26
  396. numpy-1.9.2/PKG-INFO +0 -39
  397. numpy-1.9.2/doc/scipy-sphinx-theme/.git +0 -1
  398. numpy-1.9.2/doc/source/conf.py +0 -331
  399. numpy-1.9.2/doc/source/dev/gitwash/branch_list.png +0 -0
  400. numpy-1.9.2/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  401. numpy-1.9.2/doc/source/dev/gitwash/development_workflow.rst +0 -568
  402. numpy-1.9.2/doc/source/dev/gitwash/git_links.inc +0 -88
  403. numpy-1.9.2/doc/source/dev/gitwash/index.rst +0 -14
  404. numpy-1.9.2/doc/source/dev/index.rst +0 -10
  405. numpy-1.9.2/doc/source/reference/arrays.classes.rst +0 -427
  406. numpy-1.9.2/doc/source/reference/arrays.dtypes.rst +0 -534
  407. numpy-1.9.2/doc/source/reference/arrays.indexing.rst +0 -550
  408. numpy-1.9.2/doc/source/reference/arrays.interface.rst +0 -336
  409. numpy-1.9.2/doc/source/reference/arrays.ndarray.rst +0 -609
  410. numpy-1.9.2/doc/source/reference/arrays.scalars.rst +0 -291
  411. numpy-1.9.2/doc/source/reference/c-api.array.rst +0 -3362
  412. numpy-1.9.2/doc/source/reference/c-api.config.rst +0 -103
  413. numpy-1.9.2/doc/source/reference/c-api.coremath.rst +0 -420
  414. numpy-1.9.2/doc/source/reference/c-api.dtype.rst +0 -376
  415. numpy-1.9.2/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  416. numpy-1.9.2/doc/source/reference/c-api.iterator.rst +0 -1298
  417. numpy-1.9.2/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  418. numpy-1.9.2/doc/source/reference/c-api.ufunc.rst +0 -399
  419. numpy-1.9.2/doc/source/reference/index.rst +0 -44
  420. numpy-1.9.2/doc/source/reference/internals.code-explanations.rst +0 -666
  421. numpy-1.9.2/doc/source/reference/routines.array-manipulation.rst +0 -113
  422. numpy-1.9.2/doc/source/reference/routines.io.rst +0 -74
  423. numpy-1.9.2/doc/source/reference/routines.linalg.rst +0 -88
  424. numpy-1.9.2/doc/source/reference/routines.ma.rst +0 -405
  425. numpy-1.9.2/doc/source/reference/routines.sort.rst +0 -42
  426. numpy-1.9.2/doc/source/reference/routines.statistics.rst +0 -55
  427. numpy-1.9.2/doc/source/reference/swig.interface-file.rst +0 -1055
  428. numpy-1.9.2/doc/source/reference/swig.testing.rst +0 -166
  429. numpy-1.9.2/doc/source/reference/ufuncs.rst +0 -651
  430. numpy-1.9.2/doc/source/release.rst +0 -19
  431. numpy-1.9.2/doc/source/user/basics.io.genfromtxt.rst +0 -531
  432. numpy-1.9.2/doc/source/user/basics.rec.rst +0 -7
  433. numpy-1.9.2/doc/source/user/c-info.beyond-basics.rst +0 -560
  434. numpy-1.9.2/doc/source/user/c-info.how-to-extend.rst +0 -642
  435. numpy-1.9.2/doc/source/user/c-info.python-as-glue.rst +0 -1528
  436. numpy-1.9.2/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  437. numpy-1.9.2/doc/source/user/install.rst +0 -180
  438. numpy-1.9.2/doc/sphinxext/.git +0 -1
  439. numpy-1.9.2/numpy/__init__.py +0 -216
  440. numpy-1.9.2/numpy/_import_tools.py +0 -348
  441. numpy-1.9.2/numpy/add_newdocs.py +0 -7518
  442. numpy-1.9.2/numpy/compat/_inspect.py +0 -221
  443. numpy-1.9.2/numpy/compat/py3k.py +0 -89
  444. numpy-1.9.2/numpy/compat/setup.py +0 -12
  445. numpy-1.9.2/numpy/core/__init__.py +0 -78
  446. numpy-1.9.2/numpy/core/_internal.py +0 -570
  447. numpy-1.9.2/numpy/core/_methods.py +0 -134
  448. numpy-1.9.2/numpy/core/arrayprint.py +0 -752
  449. numpy-1.9.2/numpy/core/blasdot/_dotblas.c +0 -1255
  450. numpy-1.9.2/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  451. numpy-1.9.2/numpy/core/blasdot/cblas.h +0 -578
  452. numpy-1.9.2/numpy/core/code_generators/cversions.txt +0 -31
  453. numpy-1.9.2/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  454. numpy-1.9.2/numpy/core/code_generators/generate_umath.py +0 -972
  455. numpy-1.9.2/numpy/core/code_generators/numpy_api.py +0 -412
  456. numpy-1.9.2/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  457. numpy-1.9.2/numpy/core/defchararray.py +0 -2687
  458. numpy-1.9.2/numpy/core/fromnumeric.py +0 -2938
  459. numpy-1.9.2/numpy/core/function_base.py +0 -190
  460. numpy-1.9.2/numpy/core/getlimits.py +0 -306
  461. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.c +0 -38
  462. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.h +0 -224
  463. numpy-1.9.2/numpy/core/include/numpy/ndarrayobject.h +0 -237
  464. numpy-1.9.2/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  465. numpy-1.9.2/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  466. numpy-1.9.2/numpy/core/include/numpy/npy_common.h +0 -1038
  467. numpy-1.9.2/numpy/core/include/numpy/npy_cpu.h +0 -122
  468. numpy-1.9.2/numpy/core/include/numpy/npy_endian.h +0 -49
  469. numpy-1.9.2/numpy/core/include/numpy/npy_math.h +0 -479
  470. numpy-1.9.2/numpy/core/include/numpy/numpyconfig.h +0 -35
  471. numpy-1.9.2/numpy/core/machar.py +0 -338
  472. numpy-1.9.2/numpy/core/memmap.py +0 -308
  473. numpy-1.9.2/numpy/core/numeric.py +0 -2842
  474. numpy-1.9.2/numpy/core/numerictypes.py +0 -1042
  475. numpy-1.9.2/numpy/core/records.py +0 -804
  476. numpy-1.9.2/numpy/core/setup.py +0 -1016
  477. numpy-1.9.2/numpy/core/setup_common.py +0 -321
  478. numpy-1.9.2/numpy/core/shape_base.py +0 -277
  479. numpy-1.9.2/numpy/core/src/multiarray/alloc.c +0 -241
  480. numpy-1.9.2/numpy/core/src/multiarray/arrayobject.c +0 -1791
  481. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  482. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.h +0 -13
  483. numpy-1.9.2/numpy/core/src/multiarray/buffer.c +0 -954
  484. numpy-1.9.2/numpy/core/src/multiarray/calculation.c +0 -1229
  485. numpy-1.9.2/numpy/core/src/multiarray/common.c +0 -798
  486. numpy-1.9.2/numpy/core/src/multiarray/common.h +0 -328
  487. numpy-1.9.2/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  488. numpy-1.9.2/numpy/core/src/multiarray/convert.c +0 -589
  489. numpy-1.9.2/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  490. numpy-1.9.2/numpy/core/src/multiarray/ctors.c +0 -3785
  491. numpy-1.9.2/numpy/core/src/multiarray/datetime.c +0 -3823
  492. numpy-1.9.2/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  493. numpy-1.9.2/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  494. numpy-1.9.2/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  495. numpy-1.9.2/numpy/core/src/multiarray/descriptor.c +0 -3658
  496. numpy-1.9.2/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  497. numpy-1.9.2/numpy/core/src/multiarray/einsum.c.src +0 -3013
  498. numpy-1.9.2/numpy/core/src/multiarray/getset.c +0 -984
  499. numpy-1.9.2/numpy/core/src/multiarray/hashdescr.c +0 -319
  500. numpy-1.9.2/numpy/core/src/multiarray/item_selection.c +0 -2711
  501. numpy-1.9.2/numpy/core/src/multiarray/iterators.c +0 -2160
  502. numpy-1.9.2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  503. numpy-1.9.2/numpy/core/src/multiarray/mapping.c +0 -3316
  504. numpy-1.9.2/numpy/core/src/multiarray/mapping.h +0 -73
  505. numpy-1.9.2/numpy/core/src/multiarray/methods.c +0 -2497
  506. numpy-1.9.2/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  507. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.c +0 -4202
  508. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  509. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule_onefile.c +0 -58
  510. numpy-1.9.2/numpy/core/src/multiarray/nditer_api.c +0 -2809
  511. numpy-1.9.2/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  512. numpy-1.9.2/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  513. numpy-1.9.2/numpy/core/src/multiarray/number.c +0 -1057
  514. numpy-1.9.2/numpy/core/src/multiarray/number.h +0 -76
  515. numpy-1.9.2/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  516. numpy-1.9.2/numpy/core/src/multiarray/numpyos.c +0 -683
  517. numpy-1.9.2/numpy/core/src/multiarray/scalarapi.c +0 -861
  518. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  519. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.h +0 -52
  520. numpy-1.9.2/numpy/core/src/multiarray/shape.c +0 -1141
  521. numpy-1.9.2/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  522. numpy-1.9.2/numpy/core/src/npymath/ieee754.c.src +0 -814
  523. numpy-1.9.2/numpy/core/src/npymath/npy_math.c.src +0 -527
  524. numpy-1.9.2/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  525. numpy-1.9.2/numpy/core/src/npymath/npy_math_private.h +0 -539
  526. numpy-1.9.2/numpy/core/src/npysort/heapsort.c.src +0 -341
  527. numpy-1.9.2/numpy/core/src/npysort/mergesort.c.src +0 -428
  528. numpy-1.9.2/numpy/core/src/npysort/npysort_common.h +0 -367
  529. numpy-1.9.2/numpy/core/src/npysort/quicksort.c.src +0 -363
  530. numpy-1.9.2/numpy/core/src/npysort/selection.c.src +0 -474
  531. numpy-1.9.2/numpy/core/src/private/npy_config.h +0 -44
  532. numpy-1.9.2/numpy/core/src/private/npy_partition.h.src +0 -138
  533. numpy-1.9.2/numpy/core/src/private/npy_sort.h +0 -194
  534. numpy-1.9.2/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  535. numpy-1.9.2/numpy/core/src/private/ufunc_override.h +0 -384
  536. numpy-1.9.2/numpy/core/src/scalarmathmodule.c.src +0 -1980
  537. numpy-1.9.2/numpy/core/src/umath/funcs.inc.src +0 -715
  538. numpy-1.9.2/numpy/core/src/umath/loops.c.src +0 -2654
  539. numpy-1.9.2/numpy/core/src/umath/loops.h.src +0 -501
  540. numpy-1.9.2/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  541. numpy-1.9.2/numpy/core/src/umath/simd.inc.src +0 -881
  542. numpy-1.9.2/numpy/core/src/umath/test_rational.c.src +0 -1404
  543. numpy-1.9.2/numpy/core/src/umath/ufunc_object.c +0 -5520
  544. numpy-1.9.2/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  545. numpy-1.9.2/numpy/core/src/umath/umath_tests.c.src +0 -341
  546. numpy-1.9.2/numpy/core/src/umath/umathmodule.c +0 -561
  547. numpy-1.9.2/numpy/core/src/umath/umathmodule_onefile.c +0 -6
  548. numpy-1.9.2/numpy/core/tests/test_abc.py +0 -45
  549. numpy-1.9.2/numpy/core/tests/test_api.py +0 -514
  550. numpy-1.9.2/numpy/core/tests/test_arrayprint.py +0 -167
  551. numpy-1.9.2/numpy/core/tests/test_blasdot.py +0 -249
  552. numpy-1.9.2/numpy/core/tests/test_datetime.py +0 -1781
  553. numpy-1.9.2/numpy/core/tests/test_defchararray.py +0 -642
  554. numpy-1.9.2/numpy/core/tests/test_deprecations.py +0 -512
  555. numpy-1.9.2/numpy/core/tests/test_dtype.py +0 -542
  556. numpy-1.9.2/numpy/core/tests/test_einsum.py +0 -583
  557. numpy-1.9.2/numpy/core/tests/test_errstate.py +0 -51
  558. numpy-1.9.2/numpy/core/tests/test_function_base.py +0 -111
  559. numpy-1.9.2/numpy/core/tests/test_getlimits.py +0 -86
  560. numpy-1.9.2/numpy/core/tests/test_half.py +0 -439
  561. numpy-1.9.2/numpy/core/tests/test_indexerrors.py +0 -127
  562. numpy-1.9.2/numpy/core/tests/test_indexing.py +0 -1014
  563. numpy-1.9.2/numpy/core/tests/test_item_selection.py +0 -70
  564. numpy-1.9.2/numpy/core/tests/test_machar.py +0 -30
  565. numpy-1.9.2/numpy/core/tests/test_memmap.py +0 -127
  566. numpy-1.9.2/numpy/core/tests/test_multiarray.py +0 -4645
  567. numpy-1.9.2/numpy/core/tests/test_multiarray_assignment.py +0 -80
  568. numpy-1.9.2/numpy/core/tests/test_nditer.py +0 -2630
  569. numpy-1.9.2/numpy/core/tests/test_numeric.py +0 -2117
  570. numpy-1.9.2/numpy/core/tests/test_numerictypes.py +0 -377
  571. numpy-1.9.2/numpy/core/tests/test_print.py +0 -245
  572. numpy-1.9.2/numpy/core/tests/test_records.py +0 -185
  573. numpy-1.9.2/numpy/core/tests/test_regression.py +0 -2108
  574. numpy-1.9.2/numpy/core/tests/test_scalarinherit.py +0 -34
  575. numpy-1.9.2/numpy/core/tests/test_scalarmath.py +0 -275
  576. numpy-1.9.2/numpy/core/tests/test_shape_base.py +0 -250
  577. numpy-1.9.2/numpy/core/tests/test_ufunc.py +0 -1153
  578. numpy-1.9.2/numpy/core/tests/test_umath.py +0 -1695
  579. numpy-1.9.2/numpy/core/tests/test_umath_complex.py +0 -537
  580. numpy-1.9.2/numpy/core/tests/test_unicode.py +0 -357
  581. numpy-1.9.2/numpy/distutils/__init__.py +0 -39
  582. numpy-1.9.2/numpy/distutils/ccompiler.py +0 -656
  583. numpy-1.9.2/numpy/distutils/command/autodist.py +0 -43
  584. numpy-1.9.2/numpy/distutils/command/build.py +0 -39
  585. numpy-1.9.2/numpy/distutils/command/build_clib.py +0 -284
  586. numpy-1.9.2/numpy/distutils/command/build_ext.py +0 -503
  587. numpy-1.9.2/numpy/distutils/command/config.py +0 -476
  588. numpy-1.9.2/numpy/distutils/exec_command.py +0 -618
  589. numpy-1.9.2/numpy/distutils/fcompiler/compaq.py +0 -128
  590. numpy-1.9.2/numpy/distutils/fcompiler/gnu.py +0 -390
  591. numpy-1.9.2/numpy/distutils/fcompiler/intel.py +0 -205
  592. numpy-1.9.2/numpy/distutils/fcompiler/pg.py +0 -60
  593. numpy-1.9.2/numpy/distutils/fcompiler/sun.py +0 -52
  594. numpy-1.9.2/numpy/distutils/intelccompiler.py +0 -45
  595. numpy-1.9.2/numpy/distutils/lib2def.py +0 -116
  596. numpy-1.9.2/numpy/distutils/mingw32ccompiler.py +0 -582
  597. numpy-1.9.2/numpy/distutils/misc_util.py +0 -2271
  598. numpy-1.9.2/numpy/distutils/npy_pkg_config.py +0 -464
  599. numpy-1.9.2/numpy/distutils/system_info.py +0 -2319
  600. numpy-1.9.2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  601. numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  602. numpy-1.9.2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  603. numpy-1.9.2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  604. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  605. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  606. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  607. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  608. numpy-1.9.2/numpy/distutils/tests/test_misc_util.py +0 -75
  609. numpy-1.9.2/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  610. numpy-1.9.2/numpy/distutils/unixccompiler.py +0 -113
  611. numpy-1.9.2/numpy/doc/byteswapping.py +0 -147
  612. numpy-1.9.2/numpy/doc/creation.py +0 -144
  613. numpy-1.9.2/numpy/doc/glossary.py +0 -418
  614. numpy-1.9.2/numpy/doc/indexing.py +0 -437
  615. numpy-1.9.2/numpy/doc/structured_arrays.py +0 -223
  616. numpy-1.9.2/numpy/f2py/__init__.py +0 -49
  617. numpy-1.9.2/numpy/f2py/auxfuncs.py +0 -711
  618. numpy-1.9.2/numpy/f2py/capi_maps.py +0 -773
  619. numpy-1.9.2/numpy/f2py/cb_rules.py +0 -539
  620. numpy-1.9.2/numpy/f2py/cfuncs.py +0 -1224
  621. numpy-1.9.2/numpy/f2py/common_rules.py +0 -132
  622. numpy-1.9.2/numpy/f2py/crackfortran.py +0 -2870
  623. numpy-1.9.2/numpy/f2py/diagnose.py +0 -149
  624. numpy-1.9.2/numpy/f2py/f2py2e.py +0 -598
  625. numpy-1.9.2/numpy/f2py/f2py_testing.py +0 -46
  626. numpy-1.9.2/numpy/f2py/f90mod_rules.py +0 -246
  627. numpy-1.9.2/numpy/f2py/func2subr.py +0 -291
  628. numpy-1.9.2/numpy/f2py/rules.py +0 -1448
  629. numpy-1.9.2/numpy/f2py/setup.py +0 -129
  630. numpy-1.9.2/numpy/f2py/src/fortranobject.c +0 -972
  631. numpy-1.9.2/numpy/f2py/src/fortranobject.h +0 -162
  632. numpy-1.9.2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  633. numpy-1.9.2/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  634. numpy-1.9.2/numpy/f2py/tests/test_assumed_shape.py +0 -37
  635. numpy-1.9.2/numpy/f2py/tests/test_callback.py +0 -132
  636. numpy-1.9.2/numpy/f2py/tests/test_kind.py +0 -36
  637. numpy-1.9.2/numpy/f2py/tests/test_mixed.py +0 -41
  638. numpy-1.9.2/numpy/f2py/tests/test_regression.py +0 -32
  639. numpy-1.9.2/numpy/f2py/tests/test_return_character.py +0 -142
  640. numpy-1.9.2/numpy/f2py/tests/test_return_complex.py +0 -169
  641. numpy-1.9.2/numpy/f2py/tests/test_return_integer.py +0 -178
  642. numpy-1.9.2/numpy/f2py/tests/test_return_logical.py +0 -187
  643. numpy-1.9.2/numpy/f2py/tests/test_return_real.py +0 -203
  644. numpy-1.9.2/numpy/f2py/tests/test_size.py +0 -47
  645. numpy-1.9.2/numpy/f2py/tests/util.py +0 -353
  646. numpy-1.9.2/numpy/f2py/use_rules.py +0 -109
  647. numpy-1.9.2/numpy/fft/fftpack.c +0 -1501
  648. numpy-1.9.2/numpy/fft/fftpack.h +0 -28
  649. numpy-1.9.2/numpy/fft/fftpack.py +0 -1169
  650. numpy-1.9.2/numpy/fft/fftpack_litemodule.c +0 -371
  651. numpy-1.9.2/numpy/fft/info.py +0 -179
  652. numpy-1.9.2/numpy/fft/setup.py +0 -20
  653. numpy-1.9.2/numpy/fft/tests/test_fftpack.py +0 -75
  654. numpy-1.9.2/numpy/fft/tests/test_helper.py +0 -78
  655. numpy-1.9.2/numpy/lib/_iotools.py +0 -891
  656. numpy-1.9.2/numpy/lib/arraypad.py +0 -1475
  657. numpy-1.9.2/numpy/lib/arraysetops.py +0 -464
  658. numpy-1.9.2/numpy/lib/arrayterator.py +0 -226
  659. numpy-1.9.2/numpy/lib/financial.py +0 -737
  660. numpy-1.9.2/numpy/lib/format.py +0 -771
  661. numpy-1.9.2/numpy/lib/function_base.py +0 -3884
  662. numpy-1.9.2/numpy/lib/index_tricks.py +0 -869
  663. numpy-1.9.2/numpy/lib/info.py +0 -151
  664. numpy-1.9.2/numpy/lib/nanfunctions.py +0 -1158
  665. numpy-1.9.2/numpy/lib/npyio.py +0 -1918
  666. numpy-1.9.2/numpy/lib/polynomial.py +0 -1271
  667. numpy-1.9.2/numpy/lib/recfunctions.py +0 -1003
  668. numpy-1.9.2/numpy/lib/setup.py +0 -23
  669. numpy-1.9.2/numpy/lib/shape_base.py +0 -865
  670. numpy-1.9.2/numpy/lib/src/_compiled_base.c +0 -1761
  671. numpy-1.9.2/numpy/lib/stride_tricks.py +0 -123
  672. numpy-1.9.2/numpy/lib/tests/test__iotools.py +0 -326
  673. numpy-1.9.2/numpy/lib/tests/test__version.py +0 -57
  674. numpy-1.9.2/numpy/lib/tests/test_arraypad.py +0 -560
  675. numpy-1.9.2/numpy/lib/tests/test_arraysetops.py +0 -301
  676. numpy-1.9.2/numpy/lib/tests/test_financial.py +0 -160
  677. numpy-1.9.2/numpy/lib/tests/test_format.py +0 -716
  678. numpy-1.9.2/numpy/lib/tests/test_function_base.py +0 -2145
  679. numpy-1.9.2/numpy/lib/tests/test_index_tricks.py +0 -289
  680. numpy-1.9.2/numpy/lib/tests/test_io.py +0 -1754
  681. numpy-1.9.2/numpy/lib/tests/test_nanfunctions.py +0 -774
  682. numpy-1.9.2/numpy/lib/tests/test_polynomial.py +0 -177
  683. numpy-1.9.2/numpy/lib/tests/test_recfunctions.py +0 -705
  684. numpy-1.9.2/numpy/lib/tests/test_shape_base.py +0 -368
  685. numpy-1.9.2/numpy/lib/tests/test_stride_tricks.py +0 -238
  686. numpy-1.9.2/numpy/lib/tests/test_twodim_base.py +0 -504
  687. numpy-1.9.2/numpy/lib/tests/test_type_check.py +0 -328
  688. numpy-1.9.2/numpy/lib/twodim_base.py +0 -1003
  689. numpy-1.9.2/numpy/lib/type_check.py +0 -605
  690. numpy-1.9.2/numpy/lib/utils.py +0 -1176
  691. numpy-1.9.2/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  692. numpy-1.9.2/numpy/linalg/lapack_litemodule.c +0 -362
  693. numpy-1.9.2/numpy/linalg/linalg.py +0 -2136
  694. numpy-1.9.2/numpy/linalg/tests/test_build.py +0 -53
  695. numpy-1.9.2/numpy/linalg/tests/test_linalg.py +0 -1156
  696. numpy-1.9.2/numpy/linalg/tests/test_regression.py +0 -90
  697. numpy-1.9.2/numpy/linalg/umath_linalg.c.src +0 -3210
  698. numpy-1.9.2/numpy/ma/__init__.py +0 -58
  699. numpy-1.9.2/numpy/ma/bench.py +0 -166
  700. numpy-1.9.2/numpy/ma/core.py +0 -7374
  701. numpy-1.9.2/numpy/ma/extras.py +0 -1932
  702. numpy-1.9.2/numpy/ma/mrecords.py +0 -734
  703. numpy-1.9.2/numpy/ma/setup.py +0 -20
  704. numpy-1.9.2/numpy/ma/tests/test_core.py +0 -3706
  705. numpy-1.9.2/numpy/ma/tests/test_extras.py +0 -954
  706. numpy-1.9.2/numpy/ma/tests/test_mrecords.py +0 -521
  707. numpy-1.9.2/numpy/ma/tests/test_old_ma.py +0 -869
  708. numpy-1.9.2/numpy/ma/tests/test_regression.py +0 -75
  709. numpy-1.9.2/numpy/ma/tests/test_subclassing.py +0 -236
  710. numpy-1.9.2/numpy/ma/testutils.py +0 -240
  711. numpy-1.9.2/numpy/ma/timer_comparison.py +0 -459
  712. numpy-1.9.2/numpy/matlib.py +0 -358
  713. numpy-1.9.2/numpy/matrixlib/defmatrix.py +0 -1094
  714. numpy-1.9.2/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  715. numpy-1.9.2/numpy/matrixlib/tests/test_multiarray.py +0 -18
  716. numpy-1.9.2/numpy/matrixlib/tests/test_numeric.py +0 -10
  717. numpy-1.9.2/numpy/matrixlib/tests/test_regression.py +0 -34
  718. numpy-1.9.2/numpy/polynomial/_polybase.py +0 -962
  719. numpy-1.9.2/numpy/polynomial/chebyshev.py +0 -2056
  720. numpy-1.9.2/numpy/polynomial/hermite.py +0 -1789
  721. numpy-1.9.2/numpy/polynomial/hermite_e.py +0 -1786
  722. numpy-1.9.2/numpy/polynomial/laguerre.py +0 -1781
  723. numpy-1.9.2/numpy/polynomial/legendre.py +0 -1809
  724. numpy-1.9.2/numpy/polynomial/polytemplate.py +0 -927
  725. numpy-1.9.2/numpy/polynomial/polyutils.py +0 -403
  726. numpy-1.9.2/numpy/random/mtrand/distributions.c +0 -892
  727. numpy-1.9.2/numpy/random/mtrand/mtrand.c +0 -31204
  728. numpy-1.9.2/numpy/random/mtrand/mtrand.pyx +0 -4706
  729. numpy-1.9.2/numpy/random/setup.py +0 -74
  730. numpy-1.9.2/numpy/random/tests/test_random.py +0 -707
  731. numpy-1.9.2/numpy/random/tests/test_regression.py +0 -86
  732. numpy-1.9.2/numpy/setup.py +0 -27
  733. numpy-1.9.2/numpy/testing/__init__.py +0 -16
  734. numpy-1.9.2/numpy/testing/decorators.py +0 -271
  735. numpy-1.9.2/numpy/testing/noseclasses.py +0 -353
  736. numpy-1.9.2/numpy/testing/nosetester.py +0 -504
  737. numpy-1.9.2/numpy/testing/print_coercion_tables.py +0 -89
  738. numpy-1.9.2/numpy/testing/setup.py +0 -20
  739. numpy-1.9.2/numpy/testing/tests/test_decorators.py +0 -185
  740. numpy-1.9.2/numpy/testing/tests/test_utils.py +0 -558
  741. numpy-1.9.2/numpy/testing/utils.py +0 -1715
  742. numpy-1.9.2/numpy/tests/test_ctypeslib.py +0 -102
  743. numpy-1.9.2/numpy/tests/test_matlib.py +0 -55
  744. numpy-1.9.2/numpy/version.py +0 -10
  745. numpy-1.9.2/setup.py +0 -251
  746. numpy-1.9.2/site.cfg.example +0 -157
  747. numpy-1.9.2/tools/swig/README +0 -135
  748. numpy-1.9.2/tools/swig/numpy.i +0 -3085
  749. numpy-1.9.2/tools/swig/test/Array.i +0 -102
  750. numpy-1.9.2/tools/swig/test/Makefile +0 -34
  751. numpy-1.9.2/tools/swig/test/setup.py +0 -64
  752. numpy-1.9.2/tools/swig/test/testArray.py +0 -284
  753. numpy-1.9.2/tools/swig/test/testFarray.py +0 -159
  754. numpy-1.9.2/tools/swig/test/testFortran.py +0 -173
  755. numpy-1.9.2/tools/swig/test/testMatrix.py +0 -362
  756. numpy-1.9.2/tools/swig/test/testSuperTensor.py +0 -388
  757. numpy-1.9.2/tools/swig/test/testTensor.py +0 -402
  758. numpy-1.9.2/tools/swig/test/testVector.py +0 -381
  759. {numpy-1.9.2 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  760. {numpy-1.9.2 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  761. {numpy-1.9.2 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  762. {numpy-1.9.2 → numpy-1.10.0.post2}/README.txt +0 -0
  763. {numpy-1.9.2 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  764. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  765. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  766. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  767. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  768. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  769. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  770. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  771. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  772. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  773. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  774. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  775. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  776. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  777. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  778. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  779. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  780. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  781. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  782. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  783. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  784. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  785. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  786. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  787. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  788. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  789. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  790. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  791. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  792. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  793. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  794. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  795. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  796. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  797. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  798. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  799. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  800. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  801. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  802. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  803. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  804. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  805. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  806. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  807. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  808. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  809. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  810. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  811. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  812. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  813. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  814. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  815. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  816. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  817. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  818. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  819. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  820. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  821. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  822. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  823. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  824. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  825. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  826. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  827. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  828. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  829. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  830. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  831. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  832. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  833. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  834. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  835. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  836. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  837. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  838. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  839. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  840. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  841. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  842. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  843. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  844. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  845. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  846. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  847. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  848. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  849. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  850. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  851. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  852. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  853. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  854. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  855. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  856. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  857. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  858. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  859. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  860. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  861. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  862. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  863. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  864. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  865. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  866. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  867. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  868. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  869. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  870. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  871. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  872. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  873. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  874. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  875. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  876. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  877. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  878. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  879. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  880. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  881. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  882. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  883. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  884. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  885. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  886. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  887. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  888. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  889. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  890. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  891. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  892. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  893. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  894. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  895. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  896. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  897. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  898. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  899. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  900. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  901. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  902. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  903. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  904. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  905. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  906. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  907. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  908. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  909. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  910. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  911. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  912. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  913. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  914. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  915. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  916. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  917. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  918. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  919. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  920. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  921. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  922. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  923. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  924. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  925. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  926. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  927. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  928. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  929. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  930. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  931. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  932. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  933. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  934. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  935. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  936. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  937. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  938. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  939. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  940. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  941. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  942. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  943. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  944. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  945. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  946. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  947. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  948. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  949. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  950. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  951. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  952. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  953. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  954. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  955. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  956. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  957. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  958. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  959. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  960. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  961. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  962. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  963. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  964. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  965. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  966. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  967. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  968. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  969. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  970. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  971. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  972. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  973. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  974. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  975. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  976. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  977. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  978. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  979. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  980. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  981. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  982. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  983. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  984. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  985. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  986. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  987. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  988. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  989. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  990. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  991. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  992. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  993. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  994. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  995. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  996. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  997. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  998. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  999. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  1000. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  1001. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  1002. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  1003. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1004. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1005. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1006. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1007. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1008. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1009. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1010. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1011. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1012. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1013. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1014. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1015. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1016. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1017. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1018. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1019. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1020. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1021. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1022. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1023. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1024. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1025. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1026. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1027. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1028. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1029. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1030. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1031. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1032. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1033. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1034. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1035. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1036. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1037. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1038. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1039. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1040. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1041. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1042. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1043. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1044. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1045. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1046. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1047. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1048. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1049. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1050. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1051. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1052. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1053. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1054. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1055. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1056. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1057. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1058. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1059. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1060. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1061. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1062. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1063. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1064. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1065. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1066. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1067. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1068. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1069. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1070. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1071. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1072. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1073. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1074. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1075. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1076. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1077. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1078. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1079. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1080. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1081. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1082. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1083. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1084. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1085. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1086. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1087. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1088. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1089. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1090. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1091. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1092. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1093. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1094. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1095. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1096. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1097. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1098. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1099. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1100. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1101. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1102. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1103. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1104. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1105. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1106. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1107. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1108. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1109. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1110. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1111. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1112. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1113. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1114. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1115. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1116. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1117. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1118. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1119. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1120. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1121. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1122. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1123. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1124. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1125. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1126. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1127. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1128. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1129. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1130. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1131. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1132. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1133. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1134. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1135. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1136. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1137. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1138. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1139. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1140. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1141. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1142. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1143. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1144. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1145. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1146. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1147. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1148. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1149. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1150. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1151. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1152. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1153. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1154. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1155. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1156. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1157. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1158. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1159. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1160. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1161. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1162. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1163. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1164. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1165. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1166. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1167. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1168. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1169. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1170. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1171. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1172. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1173. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1174. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1175. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1176. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1177. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1178. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1179. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1180. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1181. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1182. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1183. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1184. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1185. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1186. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1187. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1188. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1189. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1190. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1191. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1192. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1193. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1194. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1195. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1196. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1197. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1198. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1199. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1200. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1201. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1202. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1203. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1204. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1205. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1206. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1207. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1208. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1209. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1210. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1211. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1212. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1213. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1214. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1215. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1216. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1217. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1218. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1219. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1220. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1221. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1222. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1223. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1224. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1225. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1226. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1227. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1228. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1229. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1230. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1231. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1232. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1233. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1234. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1235. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1236. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1237. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1238. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1239. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1240. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1241. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1242. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1243. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1244. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1245. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1246. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1247. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1248. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1249. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1250. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1251. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1252. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1253. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1254. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1255. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1256. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1257. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1258. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1259. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1260. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1261. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1262. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1263. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1264. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1265. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1266. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1267. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1268. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1269. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1270. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1271. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1272. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1273. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1274. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1275. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1276. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1277. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1278. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1279. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1280. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1281. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1282. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1283. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1284. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1285. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1286. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1287. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1288. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1289. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1290. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1291. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1292. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1293. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1294. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1295. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1296. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1297. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1298. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1299. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1300. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1301. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1302. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1303. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1304. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1305. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1306. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1307. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1308. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1309. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1310. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1311. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1312. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1313. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1314. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1315. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1316. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1317. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1318. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1319. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1320. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1321. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1322. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1323. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1324. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1325. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1326. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1327. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1328. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1329. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1330. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1331. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1332. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1333. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1334. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1335. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1336. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1337. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1338. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1339. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1340. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1341. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1342. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1343. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1344. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1345. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1346. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1347. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1348. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1349. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1350. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1351. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1352. {numpy-1.9.2/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1353. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1354. {numpy-1.9.2/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1355. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1356. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1357. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1358. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1359. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1360. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1361. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1362. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1363. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1364. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1365. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1366. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1367. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1368. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1369. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1370. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1371. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1372. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1373. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1374. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1375. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1376. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1377. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1378. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1379. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1380. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1381. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1382. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1383. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1384. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1385. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1386. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1387. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1388. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1389. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1390. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1391. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1392. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1393. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1394. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1395. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1396. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1397. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1398. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1399. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1400. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1401. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1402. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1403. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1404. {numpy-1.9.2/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1405. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1406. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1407. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1408. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1409. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1410. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1411. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1412. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1413. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1414. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1415. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1416. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1417. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1418. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1419. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1420. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1421. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1422. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1423. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1424. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1425. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1426. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1427. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1428. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1429. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1430. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1431. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1432. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1433. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1434. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1435. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1436. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1437. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1438. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1439. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1440. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1441. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1442. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1443. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1444. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1445. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1446. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1447. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1448. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1449. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1450. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1451. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1452. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1453. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1454. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1455. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1456. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1457. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1458. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1459. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1460. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1461. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1462. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1463. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1464. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1465. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1466. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1467. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1468. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1469. {numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1470. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1471. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1472. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1473. {numpy-1.9.2/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1474. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1475. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1476. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1477. {numpy-1.9.2/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1478. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1479. {numpy-1.9.2/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1480. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1481. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1482. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1483. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1484. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1485. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1486. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1487. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1488. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1489. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1490. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1491. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1492. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1493. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1494. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1495. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1496. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1497. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1498. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1499. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1500. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1501. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1502. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1503. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1504. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1505. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1506. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1507. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1508. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1509. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1510. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1511. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1512. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1513. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1514. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1515. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1516. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1517. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1518. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1519. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1520. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1521. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1522. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1523. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1524. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1525. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1526. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1527. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1528. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1529. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1530. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1531. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1532. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1533. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1534. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1535. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1536. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1537. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1538. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1539. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1540. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1541. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1542. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1543. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1544. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1545. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1546. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1547. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1548. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1549. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1550. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1551. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1552. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1553. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1554. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1555. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1556. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1557. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1558. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1559. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1560. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1561. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1562. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1563. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1564. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1565. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1566. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1567. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1568. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1569. {numpy-1.9.2 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1570. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1571. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1572. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1573. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1574. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1575. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1576. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1577. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1578. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1579. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1580. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1581. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1582. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1583. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1584. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1585. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1586. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1587. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1588. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1589. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1590. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1591. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1592. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1593. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -0,0 +1,4766 @@
1
+ # mtrand.pyx -- A Pyrex wrapper of Jean-Sebastien Roy's RandomKit
2
+ #
3
+ # Copyright 2005 Robert Kern (robert.kern@gmail.com)
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a
6
+ # copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included
14
+ # in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ include "Python.pxi"
25
+ include "numpy.pxd"
26
+
27
+ cdef extern from "math.h":
28
+ double exp(double x)
29
+ double log(double x)
30
+ double floor(double x)
31
+ double sin(double x)
32
+ double cos(double x)
33
+
34
+ cdef extern from "numpy/npy_math.h":
35
+ int npy_isfinite(double x)
36
+
37
+ cdef extern from "mtrand_py_helper.h":
38
+ object empty_py_bytes(npy_intp length, void **bytes)
39
+
40
+ cdef extern from "randomkit.h":
41
+
42
+ ctypedef struct rk_state:
43
+ unsigned long key[624]
44
+ int pos
45
+ int has_gauss
46
+ double gauss
47
+
48
+ ctypedef enum rk_error:
49
+ RK_NOERR = 0
50
+ RK_ENODEV = 1
51
+ RK_ERR_MAX = 2
52
+
53
+ char *rk_strerror[2]
54
+
55
+ # 0xFFFFFFFFUL
56
+ unsigned long RK_MAX
57
+
58
+ void rk_seed(unsigned long seed, rk_state *state)
59
+ rk_error rk_randomseed(rk_state *state)
60
+ unsigned long rk_random(rk_state *state)
61
+ long rk_long(rk_state *state) nogil
62
+ unsigned long rk_ulong(rk_state *state) nogil
63
+ unsigned long rk_interval(unsigned long max, rk_state *state) nogil
64
+ double rk_double(rk_state *state) nogil
65
+ void rk_fill(void *buffer, size_t size, rk_state *state) nogil
66
+ rk_error rk_devfill(void *buffer, size_t size, int strong)
67
+ rk_error rk_altfill(void *buffer, size_t size, int strong,
68
+ rk_state *state) nogil
69
+ double rk_gauss(rk_state *state) nogil
70
+
71
+ cdef extern from "distributions.h":
72
+ # do not need the GIL, but they do need a lock on the state !! */
73
+
74
+ double rk_normal(rk_state *state, double loc, double scale) nogil
75
+ double rk_standard_exponential(rk_state *state) nogil
76
+ double rk_exponential(rk_state *state, double scale) nogil
77
+ double rk_uniform(rk_state *state, double loc, double scale) nogil
78
+ double rk_standard_gamma(rk_state *state, double shape) nogil
79
+ double rk_gamma(rk_state *state, double shape, double scale) nogil
80
+ double rk_beta(rk_state *state, double a, double b) nogil
81
+ double rk_chisquare(rk_state *state, double df) nogil
82
+ double rk_noncentral_chisquare(rk_state *state, double df, double nonc) nogil
83
+ double rk_f(rk_state *state, double dfnum, double dfden) nogil
84
+ double rk_noncentral_f(rk_state *state, double dfnum, double dfden, double nonc) nogil
85
+ double rk_standard_cauchy(rk_state *state) nogil
86
+ double rk_standard_t(rk_state *state, double df) nogil
87
+ double rk_vonmises(rk_state *state, double mu, double kappa) nogil
88
+ double rk_pareto(rk_state *state, double a) nogil
89
+ double rk_weibull(rk_state *state, double a) nogil
90
+ double rk_power(rk_state *state, double a) nogil
91
+ double rk_laplace(rk_state *state, double loc, double scale) nogil
92
+ double rk_gumbel(rk_state *state, double loc, double scale) nogil
93
+ double rk_logistic(rk_state *state, double loc, double scale) nogil
94
+ double rk_lognormal(rk_state *state, double mode, double sigma) nogil
95
+ double rk_rayleigh(rk_state *state, double mode) nogil
96
+ double rk_wald(rk_state *state, double mean, double scale) nogil
97
+ double rk_triangular(rk_state *state, double left, double mode, double right) nogil
98
+
99
+ long rk_binomial(rk_state *state, long n, double p) nogil
100
+ long rk_binomial_btpe(rk_state *state, long n, double p) nogil
101
+ long rk_binomial_inversion(rk_state *state, long n, double p) nogil
102
+ long rk_negative_binomial(rk_state *state, double n, double p) nogil
103
+ long rk_poisson(rk_state *state, double lam) nogil
104
+ long rk_poisson_mult(rk_state *state, double lam) nogil
105
+ long rk_poisson_ptrs(rk_state *state, double lam) nogil
106
+ long rk_zipf(rk_state *state, double a) nogil
107
+ long rk_geometric(rk_state *state, double p) nogil
108
+ long rk_hypergeometric(rk_state *state, long good, long bad, long sample) nogil
109
+ long rk_logseries(rk_state *state, double p) nogil
110
+
111
+ ctypedef double (* rk_cont0)(rk_state *state) nogil
112
+ ctypedef double (* rk_cont1)(rk_state *state, double a) nogil
113
+ ctypedef double (* rk_cont2)(rk_state *state, double a, double b) nogil
114
+ ctypedef double (* rk_cont3)(rk_state *state, double a, double b, double c) nogil
115
+
116
+ ctypedef long (* rk_disc0)(rk_state *state) nogil
117
+ ctypedef long (* rk_discnp)(rk_state *state, long n, double p) nogil
118
+ ctypedef long (* rk_discdd)(rk_state *state, double n, double p) nogil
119
+ ctypedef long (* rk_discnmN)(rk_state *state, long n, long m, long N) nogil
120
+ ctypedef long (* rk_discd)(rk_state *state, double a) nogil
121
+
122
+
123
+ cdef extern from "initarray.h":
124
+ void init_by_array(rk_state *self, unsigned long *init_key,
125
+ npy_intp key_length)
126
+
127
+ # Initialize numpy
128
+ import_array()
129
+
130
+ import numpy as np
131
+ import operator
132
+ import warnings
133
+ try:
134
+ from threading import Lock
135
+ except ImportError:
136
+ from dummy_threading import Lock
137
+
138
+ cdef object cont0_array(rk_state *state, rk_cont0 func, object size,
139
+ object lock):
140
+ cdef double *array_data
141
+ cdef ndarray array "arrayObject"
142
+ cdef npy_intp length
143
+ cdef npy_intp i
144
+
145
+ if size is None:
146
+ return func(state)
147
+ else:
148
+ array = <ndarray>np.empty(size, np.float64)
149
+ length = PyArray_SIZE(array)
150
+ array_data = <double *>PyArray_DATA(array)
151
+ with lock, nogil:
152
+ for i from 0 <= i < length:
153
+ array_data[i] = func(state)
154
+ return array
155
+
156
+
157
+ cdef object cont1_array_sc(rk_state *state, rk_cont1 func, object size, double a,
158
+ object lock):
159
+ cdef double *array_data
160
+ cdef ndarray array "arrayObject"
161
+ cdef npy_intp length
162
+ cdef npy_intp i
163
+
164
+ if size is None:
165
+ return func(state, a)
166
+ else:
167
+ array = <ndarray>np.empty(size, np.float64)
168
+ length = PyArray_SIZE(array)
169
+ array_data = <double *>PyArray_DATA(array)
170
+ with lock, nogil:
171
+ for i from 0 <= i < length:
172
+ array_data[i] = func(state, a)
173
+ return array
174
+
175
+ cdef object cont1_array(rk_state *state, rk_cont1 func, object size,
176
+ ndarray oa, object lock):
177
+ cdef double *array_data
178
+ cdef double *oa_data
179
+ cdef ndarray array "arrayObject"
180
+ cdef npy_intp length
181
+ cdef npy_intp i
182
+ cdef flatiter itera
183
+ cdef broadcast multi
184
+
185
+ if size is None:
186
+ array = <ndarray>PyArray_SimpleNew(PyArray_NDIM(oa),
187
+ PyArray_DIMS(oa) , NPY_DOUBLE)
188
+ length = PyArray_SIZE(array)
189
+ array_data = <double *>PyArray_DATA(array)
190
+ itera = <flatiter>PyArray_IterNew(<object>oa)
191
+ with lock, nogil:
192
+ for i from 0 <= i < length:
193
+ array_data[i] = func(state, (<double *>(itera.dataptr))[0])
194
+ PyArray_ITER_NEXT(itera)
195
+ else:
196
+ array = <ndarray>np.empty(size, np.float64)
197
+ array_data = <double *>PyArray_DATA(array)
198
+ multi = <broadcast>PyArray_MultiIterNew(2, <void *>array,
199
+ <void *>oa)
200
+ if (multi.size != PyArray_SIZE(array)):
201
+ raise ValueError("size is not compatible with inputs")
202
+ with lock, nogil:
203
+ for i from 0 <= i < multi.size:
204
+ oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
205
+ array_data[i] = func(state, oa_data[0])
206
+ PyArray_MultiIter_NEXTi(multi, 1)
207
+ return array
208
+
209
+ cdef object cont2_array_sc(rk_state *state, rk_cont2 func, object size, double a,
210
+ double b, object lock):
211
+ cdef double *array_data
212
+ cdef ndarray array "arrayObject"
213
+ cdef npy_intp length
214
+ cdef npy_intp i
215
+
216
+ if size is None:
217
+ return func(state, a, b)
218
+ else:
219
+ array = <ndarray>np.empty(size, np.float64)
220
+ length = PyArray_SIZE(array)
221
+ array_data = <double *>PyArray_DATA(array)
222
+ with lock, nogil:
223
+ for i from 0 <= i < length:
224
+ array_data[i] = func(state, a, b)
225
+ return array
226
+
227
+
228
+ cdef object cont2_array(rk_state *state, rk_cont2 func, object size,
229
+ ndarray oa, ndarray ob, object lock):
230
+ cdef double *array_data
231
+ cdef double *oa_data
232
+ cdef double *ob_data
233
+ cdef ndarray array "arrayObject"
234
+ cdef npy_intp length
235
+ cdef npy_intp i
236
+ cdef broadcast multi
237
+
238
+ if size is None:
239
+ multi = <broadcast> PyArray_MultiIterNew(2, <void *>oa, <void *>ob)
240
+ array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_DOUBLE)
241
+ array_data = <double *>PyArray_DATA(array)
242
+ with lock, nogil:
243
+ for i from 0 <= i < multi.size:
244
+ oa_data = <double *>PyArray_MultiIter_DATA(multi, 0)
245
+ ob_data = <double *>PyArray_MultiIter_DATA(multi, 1)
246
+ array_data[i] = func(state, oa_data[0], ob_data[0])
247
+ PyArray_MultiIter_NEXT(multi)
248
+ else:
249
+ array = <ndarray>np.empty(size, np.float64)
250
+ array_data = <double *>PyArray_DATA(array)
251
+ multi = <broadcast>PyArray_MultiIterNew(3, <void*>array, <void *>oa, <void *>ob)
252
+ if (multi.size != PyArray_SIZE(array)):
253
+ raise ValueError("size is not compatible with inputs")
254
+ with lock, nogil:
255
+ for i from 0 <= i < multi.size:
256
+ oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
257
+ ob_data = <double *>PyArray_MultiIter_DATA(multi, 2)
258
+ array_data[i] = func(state, oa_data[0], ob_data[0])
259
+ PyArray_MultiIter_NEXTi(multi, 1)
260
+ PyArray_MultiIter_NEXTi(multi, 2)
261
+ return array
262
+
263
+ cdef object cont3_array_sc(rk_state *state, rk_cont3 func, object size, double a,
264
+ double b, double c, object lock):
265
+
266
+ cdef double *array_data
267
+ cdef ndarray array "arrayObject"
268
+ cdef npy_intp length
269
+ cdef npy_intp i
270
+
271
+ if size is None:
272
+ return func(state, a, b, c)
273
+ else:
274
+ array = <ndarray>np.empty(size, np.float64)
275
+ length = PyArray_SIZE(array)
276
+ array_data = <double *>PyArray_DATA(array)
277
+ with lock, nogil:
278
+ for i from 0 <= i < length:
279
+ array_data[i] = func(state, a, b, c)
280
+ return array
281
+
282
+ cdef object cont3_array(rk_state *state, rk_cont3 func, object size,
283
+ ndarray oa, ndarray ob, ndarray oc, object lock):
284
+
285
+ cdef double *array_data
286
+ cdef double *oa_data
287
+ cdef double *ob_data
288
+ cdef double *oc_data
289
+ cdef ndarray array "arrayObject"
290
+ cdef npy_intp length
291
+ cdef npy_intp i
292
+ cdef broadcast multi
293
+
294
+ if size is None:
295
+ multi = <broadcast> PyArray_MultiIterNew(3, <void *>oa, <void *>ob, <void *>oc)
296
+ array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_DOUBLE)
297
+ array_data = <double *>PyArray_DATA(array)
298
+ with lock, nogil:
299
+ for i from 0 <= i < multi.size:
300
+ oa_data = <double *>PyArray_MultiIter_DATA(multi, 0)
301
+ ob_data = <double *>PyArray_MultiIter_DATA(multi, 1)
302
+ oc_data = <double *>PyArray_MultiIter_DATA(multi, 2)
303
+ array_data[i] = func(state, oa_data[0], ob_data[0], oc_data[0])
304
+ PyArray_MultiIter_NEXT(multi)
305
+ else:
306
+ array = <ndarray>np.empty(size, np.float64)
307
+ array_data = <double *>PyArray_DATA(array)
308
+ multi = <broadcast>PyArray_MultiIterNew(4, <void*>array, <void *>oa,
309
+ <void *>ob, <void *>oc)
310
+ if (multi.size != PyArray_SIZE(array)):
311
+ raise ValueError("size is not compatible with inputs")
312
+ with lock, nogil:
313
+ for i from 0 <= i < multi.size:
314
+ oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
315
+ ob_data = <double *>PyArray_MultiIter_DATA(multi, 2)
316
+ oc_data = <double *>PyArray_MultiIter_DATA(multi, 3)
317
+ array_data[i] = func(state, oa_data[0], ob_data[0], oc_data[0])
318
+ PyArray_MultiIter_NEXT(multi)
319
+ return array
320
+
321
+ cdef object disc0_array(rk_state *state, rk_disc0 func, object size, object lock):
322
+ cdef long *array_data
323
+ cdef ndarray array "arrayObject"
324
+ cdef npy_intp length
325
+ cdef npy_intp i
326
+
327
+ if size is None:
328
+ return func(state)
329
+ else:
330
+ array = <ndarray>np.empty(size, int)
331
+ length = PyArray_SIZE(array)
332
+ array_data = <long *>PyArray_DATA(array)
333
+ with lock, nogil:
334
+ for i from 0 <= i < length:
335
+ array_data[i] = func(state)
336
+ return array
337
+
338
+ cdef object discnp_array_sc(rk_state *state, rk_discnp func, object size,
339
+ long n, double p, object lock):
340
+ cdef long *array_data
341
+ cdef ndarray array "arrayObject"
342
+ cdef npy_intp length
343
+ cdef npy_intp i
344
+
345
+ if size is None:
346
+ return func(state, n, p)
347
+ else:
348
+ array = <ndarray>np.empty(size, int)
349
+ length = PyArray_SIZE(array)
350
+ array_data = <long *>PyArray_DATA(array)
351
+ with lock, nogil:
352
+ for i from 0 <= i < length:
353
+ array_data[i] = func(state, n, p)
354
+ return array
355
+
356
+ cdef object discnp_array(rk_state *state, rk_discnp func, object size,
357
+ ndarray on, ndarray op, object lock):
358
+ cdef long *array_data
359
+ cdef ndarray array "arrayObject"
360
+ cdef npy_intp length
361
+ cdef npy_intp i
362
+ cdef double *op_data
363
+ cdef long *on_data
364
+ cdef broadcast multi
365
+
366
+ if size is None:
367
+ multi = <broadcast> PyArray_MultiIterNew(2, <void *>on, <void *>op)
368
+ array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_LONG)
369
+ array_data = <long *>PyArray_DATA(array)
370
+ with lock, nogil:
371
+ for i from 0 <= i < multi.size:
372
+ on_data = <long *>PyArray_MultiIter_DATA(multi, 0)
373
+ op_data = <double *>PyArray_MultiIter_DATA(multi, 1)
374
+ array_data[i] = func(state, on_data[0], op_data[0])
375
+ PyArray_MultiIter_NEXT(multi)
376
+ else:
377
+ array = <ndarray>np.empty(size, int)
378
+ array_data = <long *>PyArray_DATA(array)
379
+ multi = <broadcast>PyArray_MultiIterNew(3, <void*>array, <void *>on, <void *>op)
380
+ if (multi.size != PyArray_SIZE(array)):
381
+ raise ValueError("size is not compatible with inputs")
382
+ with lock, nogil:
383
+ for i from 0 <= i < multi.size:
384
+ on_data = <long *>PyArray_MultiIter_DATA(multi, 1)
385
+ op_data = <double *>PyArray_MultiIter_DATA(multi, 2)
386
+ array_data[i] = func(state, on_data[0], op_data[0])
387
+ PyArray_MultiIter_NEXTi(multi, 1)
388
+ PyArray_MultiIter_NEXTi(multi, 2)
389
+
390
+ return array
391
+
392
+ cdef object discdd_array_sc(rk_state *state, rk_discdd func, object size,
393
+ double n, double p, object lock):
394
+ cdef long *array_data
395
+ cdef ndarray array "arrayObject"
396
+ cdef npy_intp length
397
+ cdef npy_intp i
398
+
399
+ if size is None:
400
+ return func(state, n, p)
401
+ else:
402
+ array = <ndarray>np.empty(size, int)
403
+ length = PyArray_SIZE(array)
404
+ array_data = <long *>PyArray_DATA(array)
405
+ with lock, nogil:
406
+ for i from 0 <= i < length:
407
+ array_data[i] = func(state, n, p)
408
+ return array
409
+
410
+ cdef object discdd_array(rk_state *state, rk_discdd func, object size,
411
+ ndarray on, ndarray op, object lock):
412
+ cdef long *array_data
413
+ cdef ndarray array "arrayObject"
414
+ cdef npy_intp length
415
+ cdef npy_intp i
416
+ cdef double *op_data
417
+ cdef double *on_data
418
+ cdef broadcast multi
419
+
420
+ if size is None:
421
+ multi = <broadcast> PyArray_MultiIterNew(2, <void *>on, <void *>op)
422
+ array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_LONG)
423
+ array_data = <long *>PyArray_DATA(array)
424
+ with lock, nogil:
425
+ for i from 0 <= i < multi.size:
426
+ on_data = <double *>PyArray_MultiIter_DATA(multi, 0)
427
+ op_data = <double *>PyArray_MultiIter_DATA(multi, 1)
428
+ array_data[i] = func(state, on_data[0], op_data[0])
429
+ PyArray_MultiIter_NEXT(multi)
430
+ else:
431
+ array = <ndarray>np.empty(size, int)
432
+ array_data = <long *>PyArray_DATA(array)
433
+ multi = <broadcast>PyArray_MultiIterNew(3, <void*>array, <void *>on, <void *>op)
434
+ if (multi.size != PyArray_SIZE(array)):
435
+ raise ValueError("size is not compatible with inputs")
436
+ with lock, nogil:
437
+ for i from 0 <= i < multi.size:
438
+ on_data = <double *>PyArray_MultiIter_DATA(multi, 1)
439
+ op_data = <double *>PyArray_MultiIter_DATA(multi, 2)
440
+ array_data[i] = func(state, on_data[0], op_data[0])
441
+ PyArray_MultiIter_NEXTi(multi, 1)
442
+ PyArray_MultiIter_NEXTi(multi, 2)
443
+
444
+ return array
445
+
446
+ cdef object discnmN_array_sc(rk_state *state, rk_discnmN func, object size,
447
+ long n, long m, long N, object lock):
448
+ cdef long *array_data
449
+ cdef ndarray array "arrayObject"
450
+ cdef npy_intp length
451
+ cdef npy_intp i
452
+
453
+ if size is None:
454
+ return func(state, n, m, N)
455
+ else:
456
+ array = <ndarray>np.empty(size, int)
457
+ length = PyArray_SIZE(array)
458
+ array_data = <long *>PyArray_DATA(array)
459
+ with lock, nogil:
460
+ for i from 0 <= i < length:
461
+ array_data[i] = func(state, n, m, N)
462
+ return array
463
+
464
+ cdef object discnmN_array(rk_state *state, rk_discnmN func, object size,
465
+ ndarray on, ndarray om, ndarray oN, object lock):
466
+ cdef long *array_data
467
+ cdef long *on_data
468
+ cdef long *om_data
469
+ cdef long *oN_data
470
+ cdef ndarray array "arrayObject"
471
+ cdef npy_intp length
472
+ cdef npy_intp i
473
+ cdef broadcast multi
474
+
475
+ if size is None:
476
+ multi = <broadcast> PyArray_MultiIterNew(3, <void *>on, <void *>om, <void *>oN)
477
+ array = <ndarray> PyArray_SimpleNew(multi.nd, multi.dimensions, NPY_LONG)
478
+ array_data = <long *>PyArray_DATA(array)
479
+ with lock, nogil:
480
+ for i from 0 <= i < multi.size:
481
+ on_data = <long *>PyArray_MultiIter_DATA(multi, 0)
482
+ om_data = <long *>PyArray_MultiIter_DATA(multi, 1)
483
+ oN_data = <long *>PyArray_MultiIter_DATA(multi, 2)
484
+ array_data[i] = func(state, on_data[0], om_data[0], oN_data[0])
485
+ PyArray_MultiIter_NEXT(multi)
486
+ else:
487
+ array = <ndarray>np.empty(size, int)
488
+ array_data = <long *>PyArray_DATA(array)
489
+ multi = <broadcast>PyArray_MultiIterNew(4, <void*>array, <void *>on, <void *>om,
490
+ <void *>oN)
491
+ if (multi.size != PyArray_SIZE(array)):
492
+ raise ValueError("size is not compatible with inputs")
493
+ with lock, nogil:
494
+ for i from 0 <= i < multi.size:
495
+ on_data = <long *>PyArray_MultiIter_DATA(multi, 1)
496
+ om_data = <long *>PyArray_MultiIter_DATA(multi, 2)
497
+ oN_data = <long *>PyArray_MultiIter_DATA(multi, 3)
498
+ array_data[i] = func(state, on_data[0], om_data[0], oN_data[0])
499
+ PyArray_MultiIter_NEXT(multi)
500
+
501
+ return array
502
+
503
+ cdef object discd_array_sc(rk_state *state, rk_discd func, object size,
504
+ double a, object lock):
505
+ cdef long *array_data
506
+ cdef ndarray array "arrayObject"
507
+ cdef npy_intp length
508
+ cdef npy_intp i
509
+
510
+ if size is None:
511
+ return func(state, a)
512
+ else:
513
+ array = <ndarray>np.empty(size, int)
514
+ length = PyArray_SIZE(array)
515
+ array_data = <long *>PyArray_DATA(array)
516
+ with lock, nogil:
517
+ for i from 0 <= i < length:
518
+ array_data[i] = func(state, a)
519
+ return array
520
+
521
+ cdef object discd_array(rk_state *state, rk_discd func, object size, ndarray oa,
522
+ object lock):
523
+ cdef long *array_data
524
+ cdef double *oa_data
525
+ cdef ndarray array "arrayObject"
526
+ cdef npy_intp length
527
+ cdef npy_intp i
528
+ cdef broadcast multi
529
+ cdef flatiter itera
530
+
531
+ if size is None:
532
+ array = <ndarray>PyArray_SimpleNew(PyArray_NDIM(oa),
533
+ PyArray_DIMS(oa), NPY_LONG)
534
+ length = PyArray_SIZE(array)
535
+ array_data = <long *>PyArray_DATA(array)
536
+ itera = <flatiter>PyArray_IterNew(<object>oa)
537
+ with lock, nogil:
538
+ for i from 0 <= i < length:
539
+ array_data[i] = func(state, (<double *>(itera.dataptr))[0])
540
+ PyArray_ITER_NEXT(itera)
541
+ else:
542
+ array = <ndarray>np.empty(size, int)
543
+ array_data = <long *>PyArray_DATA(array)
544
+ multi = <broadcast>PyArray_MultiIterNew(2, <void *>array, <void *>oa)
545
+ if (multi.size != PyArray_SIZE(array)):
546
+ raise ValueError("size is not compatible with inputs")
547
+ with lock, nogil:
548
+ for i from 0 <= i < multi.size:
549
+ oa_data = <double *>PyArray_MultiIter_DATA(multi, 1)
550
+ array_data[i] = func(state, oa_data[0])
551
+ PyArray_MultiIter_NEXTi(multi, 1)
552
+ return array
553
+
554
+ cdef double kahan_sum(double *darr, npy_intp n):
555
+ cdef double c, y, t, sum
556
+ cdef npy_intp i
557
+ sum = darr[0]
558
+ c = 0.0
559
+ for i from 1 <= i < n:
560
+ y = darr[i] - c
561
+ t = sum + y
562
+ c = (t-sum) - y
563
+ sum = t
564
+ return sum
565
+
566
+ def _shape_from_size(size, d):
567
+ if size is None:
568
+ shape = (d,)
569
+ else:
570
+ try:
571
+ shape = (operator.index(size), d)
572
+ except TypeError:
573
+ shape = tuple(size) + (d,)
574
+ return shape
575
+
576
+ cdef class RandomState:
577
+ """
578
+ RandomState(seed=None)
579
+
580
+ Container for the Mersenne Twister pseudo-random number generator.
581
+
582
+ `RandomState` exposes a number of methods for generating random numbers
583
+ drawn from a variety of probability distributions. In addition to the
584
+ distribution-specific arguments, each method takes a keyword argument
585
+ `size` that defaults to ``None``. If `size` is ``None``, then a single
586
+ value is generated and returned. If `size` is an integer, then a 1-D
587
+ array filled with generated values is returned. If `size` is a tuple,
588
+ then an array with that shape is filled and returned.
589
+
590
+ Parameters
591
+ ----------
592
+ seed : {None, int, array_like}, optional
593
+ Random seed initializing the pseudo-random number generator.
594
+ Can be an integer, an array (or other sequence) of integers of
595
+ any length, or ``None`` (the default).
596
+ If `seed` is ``None``, then `RandomState` will try to read data from
597
+ ``/dev/urandom`` (or the Windows analogue) if available or seed from
598
+ the clock otherwise.
599
+
600
+ Notes
601
+ -----
602
+ The Python stdlib module "random" also contains a Mersenne Twister
603
+ pseudo-random number generator with a number of methods that are similar
604
+ to the ones available in `RandomState`. `RandomState`, besides being
605
+ NumPy-aware, has the advantage that it provides a much larger number
606
+ of probability distributions to choose from.
607
+
608
+ """
609
+ cdef rk_state *internal_state
610
+ cdef object lock
611
+ poisson_lam_max = np.iinfo('l').max - np.sqrt(np.iinfo('l').max)*10
612
+
613
+ def __init__(self, seed=None):
614
+ self.internal_state = <rk_state*>PyMem_Malloc(sizeof(rk_state))
615
+
616
+ self.lock = Lock()
617
+ self.seed(seed)
618
+
619
+ def __dealloc__(self):
620
+ if self.internal_state != NULL:
621
+ PyMem_Free(self.internal_state)
622
+ self.internal_state = NULL
623
+
624
+ def seed(self, seed=None):
625
+ """
626
+ seed(seed=None)
627
+
628
+ Seed the generator.
629
+
630
+ This method is called when `RandomState` is initialized. It can be
631
+ called again to re-seed the generator. For details, see `RandomState`.
632
+
633
+ Parameters
634
+ ----------
635
+ seed : int or array_like, optional
636
+ Seed for `RandomState`.
637
+ Must be convertible to 32 bit unsigned integers.
638
+
639
+ See Also
640
+ --------
641
+ RandomState
642
+
643
+ """
644
+ cdef rk_error errcode
645
+ cdef ndarray obj "arrayObject_obj"
646
+ try:
647
+ if seed is None:
648
+ with self.lock:
649
+ errcode = rk_randomseed(self.internal_state)
650
+ else:
651
+ idx = operator.index(seed)
652
+ if idx > int(2**32 - 1) or idx < 0:
653
+ raise ValueError("Seed must be between 0 and 4294967295")
654
+ with self.lock:
655
+ rk_seed(idx, self.internal_state)
656
+ except TypeError:
657
+ obj = np.asarray(seed).astype(np.int64, casting='safe')
658
+ if ((obj > int(2**32 - 1)) | (obj < 0)).any():
659
+ raise ValueError("Seed must be between 0 and 4294967295")
660
+ obj = obj.astype('L', casting='unsafe')
661
+ with self.lock:
662
+ init_by_array(self.internal_state, <unsigned long *>PyArray_DATA(obj),
663
+ PyArray_DIM(obj, 0))
664
+
665
+ def get_state(self):
666
+ """
667
+ get_state()
668
+
669
+ Return a tuple representing the internal state of the generator.
670
+
671
+ For more details, see `set_state`.
672
+
673
+ Returns
674
+ -------
675
+ out : tuple(str, ndarray of 624 uints, int, int, float)
676
+ The returned tuple has the following items:
677
+
678
+ 1. the string 'MT19937'.
679
+ 2. a 1-D array of 624 unsigned integer keys.
680
+ 3. an integer ``pos``.
681
+ 4. an integer ``has_gauss``.
682
+ 5. a float ``cached_gaussian``.
683
+
684
+ See Also
685
+ --------
686
+ set_state
687
+
688
+ Notes
689
+ -----
690
+ `set_state` and `get_state` are not needed to work with any of the
691
+ random distributions in NumPy. If the internal state is manually altered,
692
+ the user should know exactly what he/she is doing.
693
+
694
+ """
695
+ cdef ndarray state "arrayObject_state"
696
+ state = <ndarray>np.empty(624, np.uint)
697
+ with self.lock:
698
+ memcpy(<void*>PyArray_DATA(state), <void*>(self.internal_state.key), 624*sizeof(long))
699
+ has_gauss = self.internal_state.has_gauss
700
+ gauss = self.internal_state.gauss
701
+ pos = self.internal_state.pos
702
+ state = <ndarray>np.asarray(state, np.uint32)
703
+ return ('MT19937', state, pos, has_gauss, gauss)
704
+
705
+ def set_state(self, state):
706
+ """
707
+ set_state(state)
708
+
709
+ Set the internal state of the generator from a tuple.
710
+
711
+ For use if one has reason to manually (re-)set the internal state of the
712
+ "Mersenne Twister"[1]_ pseudo-random number generating algorithm.
713
+
714
+ Parameters
715
+ ----------
716
+ state : tuple(str, ndarray of 624 uints, int, int, float)
717
+ The `state` tuple has the following items:
718
+
719
+ 1. the string 'MT19937', specifying the Mersenne Twister algorithm.
720
+ 2. a 1-D array of 624 unsigned integers ``keys``.
721
+ 3. an integer ``pos``.
722
+ 4. an integer ``has_gauss``.
723
+ 5. a float ``cached_gaussian``.
724
+
725
+ Returns
726
+ -------
727
+ out : None
728
+ Returns 'None' on success.
729
+
730
+ See Also
731
+ --------
732
+ get_state
733
+
734
+ Notes
735
+ -----
736
+ `set_state` and `get_state` are not needed to work with any of the
737
+ random distributions in NumPy. If the internal state is manually altered,
738
+ the user should know exactly what he/she is doing.
739
+
740
+ For backwards compatibility, the form (str, array of 624 uints, int) is
741
+ also accepted although it is missing some information about the cached
742
+ Gaussian value: ``state = ('MT19937', keys, pos)``.
743
+
744
+ References
745
+ ----------
746
+ .. [1] M. Matsumoto and T. Nishimura, "Mersenne Twister: A
747
+ 623-dimensionally equidistributed uniform pseudorandom number
748
+ generator," *ACM Trans. on Modeling and Computer Simulation*,
749
+ Vol. 8, No. 1, pp. 3-30, Jan. 1998.
750
+
751
+ """
752
+ cdef ndarray obj "arrayObject_obj"
753
+ cdef int pos
754
+ algorithm_name = state[0]
755
+ if algorithm_name != 'MT19937':
756
+ raise ValueError("algorithm must be 'MT19937'")
757
+ key, pos = state[1:3]
758
+ if len(state) == 3:
759
+ has_gauss = 0
760
+ cached_gaussian = 0.0
761
+ else:
762
+ has_gauss, cached_gaussian = state[3:5]
763
+ try:
764
+ obj = <ndarray>PyArray_ContiguousFromObject(key, NPY_ULONG, 1, 1)
765
+ except TypeError:
766
+ # compatibility -- could be an older pickle
767
+ obj = <ndarray>PyArray_ContiguousFromObject(key, NPY_LONG, 1, 1)
768
+ if PyArray_DIM(obj, 0) != 624:
769
+ raise ValueError("state must be 624 longs")
770
+ with self.lock:
771
+ memcpy(<void*>(self.internal_state.key), <void*>PyArray_DATA(obj), 624*sizeof(long))
772
+ self.internal_state.pos = pos
773
+ self.internal_state.has_gauss = has_gauss
774
+ self.internal_state.gauss = cached_gaussian
775
+
776
+ # Pickling support:
777
+ def __getstate__(self):
778
+ return self.get_state()
779
+
780
+ def __setstate__(self, state):
781
+ self.set_state(state)
782
+
783
+ def __reduce__(self):
784
+ return (np.random.__RandomState_ctor, (), self.get_state())
785
+
786
+ # Basic distributions:
787
+ def random_sample(self, size=None):
788
+ """
789
+ random_sample(size=None)
790
+
791
+ Return random floats in the half-open interval [0.0, 1.0).
792
+
793
+ Results are from the "continuous uniform" distribution over the
794
+ stated interval. To sample :math:`Unif[a, b), b > a` multiply
795
+ the output of `random_sample` by `(b-a)` and add `a`::
796
+
797
+ (b - a) * random_sample() + a
798
+
799
+ Parameters
800
+ ----------
801
+ size : int or tuple of ints, optional
802
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
803
+ ``m * n * k`` samples are drawn. Default is None, in which case a
804
+ single value is returned.
805
+
806
+ Returns
807
+ -------
808
+ out : float or ndarray of floats
809
+ Array of random floats of shape `size` (unless ``size=None``, in which
810
+ case a single float is returned).
811
+
812
+ Examples
813
+ --------
814
+ >>> np.random.random_sample()
815
+ 0.47108547995356098
816
+ >>> type(np.random.random_sample())
817
+ <type 'float'>
818
+ >>> np.random.random_sample((5,))
819
+ array([ 0.30220482, 0.86820401, 0.1654503 , 0.11659149, 0.54323428])
820
+
821
+ Three-by-two array of random numbers from [-5, 0):
822
+
823
+ >>> 5 * np.random.random_sample((3, 2)) - 5
824
+ array([[-3.99149989, -0.52338984],
825
+ [-2.99091858, -0.79479508],
826
+ [-1.23204345, -1.75224494]])
827
+
828
+ """
829
+ return cont0_array(self.internal_state, rk_double, size, self.lock)
830
+
831
+ def tomaxint(self, size=None):
832
+ """
833
+ tomaxint(size=None)
834
+
835
+ Random integers between 0 and ``sys.maxint``, inclusive.
836
+
837
+ Return a sample of uniformly distributed random integers in the interval
838
+ [0, ``sys.maxint``].
839
+
840
+ Parameters
841
+ ----------
842
+ size : int or tuple of ints, optional
843
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
844
+ ``m * n * k`` samples are drawn. Default is None, in which case a
845
+ single value is returned.
846
+
847
+ Returns
848
+ -------
849
+ out : ndarray
850
+ Drawn samples, with shape `size`.
851
+
852
+ See Also
853
+ --------
854
+ randint : Uniform sampling over a given half-open interval of integers.
855
+ random_integers : Uniform sampling over a given closed interval of
856
+ integers.
857
+
858
+ Examples
859
+ --------
860
+ >>> RS = np.random.mtrand.RandomState() # need a RandomState object
861
+ >>> RS.tomaxint((2,2,2))
862
+ array([[[1170048599, 1600360186],
863
+ [ 739731006, 1947757578]],
864
+ [[1871712945, 752307660],
865
+ [1601631370, 1479324245]]])
866
+ >>> import sys
867
+ >>> sys.maxint
868
+ 2147483647
869
+ >>> RS.tomaxint((2,2,2)) < sys.maxint
870
+ array([[[ True, True],
871
+ [ True, True]],
872
+ [[ True, True],
873
+ [ True, True]]], dtype=bool)
874
+
875
+ """
876
+ return disc0_array(self.internal_state, rk_long, size, self.lock)
877
+
878
+ def randint(self, low, high=None, size=None):
879
+ """
880
+ randint(low, high=None, size=None)
881
+
882
+ Return random integers from `low` (inclusive) to `high` (exclusive).
883
+
884
+ Return random integers from the "discrete uniform" distribution in the
885
+ "half-open" interval [`low`, `high`). If `high` is None (the default),
886
+ then results are from [0, `low`).
887
+
888
+ Parameters
889
+ ----------
890
+ low : int
891
+ Lowest (signed) integer to be drawn from the distribution (unless
892
+ ``high=None``, in which case this parameter is the *highest* such
893
+ integer).
894
+ high : int, optional
895
+ If provided, one above the largest (signed) integer to be drawn
896
+ from the distribution (see above for behavior if ``high=None``).
897
+ size : int or tuple of ints, optional
898
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
899
+ ``m * n * k`` samples are drawn. Default is None, in which case a
900
+ single value is returned.
901
+
902
+ Returns
903
+ -------
904
+ out : int or ndarray of ints
905
+ `size`-shaped array of random integers from the appropriate
906
+ distribution, or a single such random int if `size` not provided.
907
+
908
+ See Also
909
+ --------
910
+ random.random_integers : similar to `randint`, only for the closed
911
+ interval [`low`, `high`], and 1 is the lowest value if `high` is
912
+ omitted. In particular, this other one is the one to use to generate
913
+ uniformly distributed discrete non-integers.
914
+
915
+ Examples
916
+ --------
917
+ >>> np.random.randint(2, size=10)
918
+ array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])
919
+ >>> np.random.randint(1, size=10)
920
+ array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
921
+
922
+ Generate a 2 x 4 array of ints between 0 and 4, inclusive:
923
+
924
+ >>> np.random.randint(5, size=(2, 4))
925
+ array([[4, 0, 2, 1],
926
+ [3, 2, 2, 0]])
927
+
928
+ """
929
+ cdef long lo, hi, rv
930
+ cdef unsigned long diff
931
+ cdef long *array_data
932
+ cdef ndarray array "arrayObject"
933
+ cdef npy_intp length
934
+ cdef npy_intp i
935
+
936
+ if high is None:
937
+ lo = 0
938
+ hi = low
939
+ else:
940
+ lo = low
941
+ hi = high
942
+
943
+ if lo >= hi :
944
+ raise ValueError("low >= high")
945
+
946
+ diff = <unsigned long>hi - <unsigned long>lo - 1UL
947
+ if size is None:
948
+ with self.lock:
949
+ rv = lo + <long>rk_interval(diff, self. internal_state)
950
+ return rv
951
+ else:
952
+ array = <ndarray>np.empty(size, int)
953
+ length = PyArray_SIZE(array)
954
+ array_data = <long *>PyArray_DATA(array)
955
+ with self.lock, nogil:
956
+ for i from 0 <= i < length:
957
+ rv = lo + <long>rk_interval(diff, self. internal_state)
958
+ array_data[i] = rv
959
+ return array
960
+
961
+ def bytes(self, npy_intp length):
962
+ """
963
+ bytes(length)
964
+
965
+ Return random bytes.
966
+
967
+ Parameters
968
+ ----------
969
+ length : int
970
+ Number of random bytes.
971
+
972
+ Returns
973
+ -------
974
+ out : str
975
+ String of length `length`.
976
+
977
+ Examples
978
+ --------
979
+ >>> np.random.bytes(10)
980
+ ' eh\\x85\\x022SZ\\xbf\\xa4' #random
981
+
982
+ """
983
+ cdef void *bytes
984
+ bytestring = empty_py_bytes(length, &bytes)
985
+ with self.lock, nogil:
986
+ rk_fill(bytes, length, self.internal_state)
987
+ return bytestring
988
+
989
+
990
+ def choice(self, a, size=None, replace=True, p=None):
991
+ """
992
+ choice(a, size=None, replace=True, p=None)
993
+
994
+ Generates a random sample from a given 1-D array
995
+
996
+ .. versionadded:: 1.7.0
997
+
998
+ Parameters
999
+ -----------
1000
+ a : 1-D array-like or int
1001
+ If an ndarray, a random sample is generated from its elements.
1002
+ If an int, the random sample is generated as if a was np.arange(n)
1003
+ size : int or tuple of ints, optional
1004
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1005
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1006
+ single value is returned.
1007
+ replace : boolean, optional
1008
+ Whether the sample is with or without replacement
1009
+ p : 1-D array-like, optional
1010
+ The probabilities associated with each entry in a.
1011
+ If not given the sample assumes a uniform distribution over all
1012
+ entries in a.
1013
+
1014
+ Returns
1015
+ --------
1016
+ samples : 1-D ndarray, shape (size,)
1017
+ The generated random samples
1018
+
1019
+ Raises
1020
+ -------
1021
+ ValueError
1022
+ If a is an int and less than zero, if a or p are not 1-dimensional,
1023
+ if a is an array-like of size 0, if p is not a vector of
1024
+ probabilities, if a and p have different lengths, or if
1025
+ replace=False and the sample size is greater than the population
1026
+ size
1027
+
1028
+ See Also
1029
+ ---------
1030
+ randint, shuffle, permutation
1031
+
1032
+ Examples
1033
+ ---------
1034
+ Generate a uniform random sample from np.arange(5) of size 3:
1035
+
1036
+ >>> np.random.choice(5, 3)
1037
+ array([0, 3, 4])
1038
+ >>> #This is equivalent to np.random.randint(0,5,3)
1039
+
1040
+ Generate a non-uniform random sample from np.arange(5) of size 3:
1041
+
1042
+ >>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
1043
+ array([3, 3, 0])
1044
+
1045
+ Generate a uniform random sample from np.arange(5) of size 3 without
1046
+ replacement:
1047
+
1048
+ >>> np.random.choice(5, 3, replace=False)
1049
+ array([3,1,0])
1050
+ >>> #This is equivalent to np.random.permutation(np.arange(5))[:3]
1051
+
1052
+ Generate a non-uniform random sample from np.arange(5) of size
1053
+ 3 without replacement:
1054
+
1055
+ >>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
1056
+ array([2, 3, 0])
1057
+
1058
+ Any of the above can be repeated with an arbitrary array-like
1059
+ instead of just integers. For instance:
1060
+
1061
+ >>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
1062
+ >>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
1063
+ array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'],
1064
+ dtype='|S11')
1065
+
1066
+ """
1067
+
1068
+ # Format and Verify input
1069
+ a = np.array(a, copy=False)
1070
+ if a.ndim == 0:
1071
+ try:
1072
+ # __index__ must return an integer by python rules.
1073
+ pop_size = operator.index(a.item())
1074
+ except TypeError:
1075
+ raise ValueError("a must be 1-dimensional or an integer")
1076
+ if pop_size <= 0:
1077
+ raise ValueError("a must be greater than 0")
1078
+ elif a.ndim != 1:
1079
+ raise ValueError("a must be 1-dimensional")
1080
+ else:
1081
+ pop_size = a.shape[0]
1082
+ if pop_size is 0:
1083
+ raise ValueError("a must be non-empty")
1084
+
1085
+ if p is not None:
1086
+ d = len(p)
1087
+
1088
+ atol = np.sqrt(np.finfo(np.float64).eps)
1089
+ if isinstance(p, np.ndarray):
1090
+ if np.issubdtype(p.dtype, np.floating):
1091
+ atol = max(atol, np.sqrt(np.finfo(p.dtype).eps))
1092
+
1093
+ p = <ndarray>PyArray_ContiguousFromObject(p, NPY_DOUBLE, 1, 1)
1094
+ pix = <double*>PyArray_DATA(p)
1095
+
1096
+ if p.ndim != 1:
1097
+ raise ValueError("p must be 1-dimensional")
1098
+ if p.size != pop_size:
1099
+ raise ValueError("a and p must have same size")
1100
+ if np.logical_or.reduce(p < 0):
1101
+ raise ValueError("probabilities are not non-negative")
1102
+ if abs(kahan_sum(pix, d) - 1.) > atol:
1103
+ raise ValueError("probabilities do not sum to 1")
1104
+
1105
+ shape = size
1106
+ if shape is not None:
1107
+ size = np.prod(shape, dtype=np.intp)
1108
+ else:
1109
+ size = 1
1110
+
1111
+ # Actual sampling
1112
+ if replace:
1113
+ if p is not None:
1114
+ cdf = p.cumsum()
1115
+ cdf /= cdf[-1]
1116
+ uniform_samples = self.random_sample(shape)
1117
+ idx = cdf.searchsorted(uniform_samples, side='right')
1118
+ idx = np.array(idx, copy=False) # searchsorted returns a scalar
1119
+ else:
1120
+ idx = self.randint(0, pop_size, size=shape)
1121
+ else:
1122
+ if size > pop_size:
1123
+ raise ValueError("Cannot take a larger sample than "
1124
+ "population when 'replace=False'")
1125
+
1126
+ if p is not None:
1127
+ if np.count_nonzero(p > 0) < size:
1128
+ raise ValueError("Fewer non-zero entries in p than size")
1129
+ n_uniq = 0
1130
+ p = p.copy()
1131
+ found = np.zeros(shape, dtype=np.int)
1132
+ flat_found = found.ravel()
1133
+ while n_uniq < size:
1134
+ x = self.rand(size - n_uniq)
1135
+ if n_uniq > 0:
1136
+ p[flat_found[0:n_uniq]] = 0
1137
+ cdf = np.cumsum(p)
1138
+ cdf /= cdf[-1]
1139
+ new = cdf.searchsorted(x, side='right')
1140
+ _, unique_indices = np.unique(new, return_index=True)
1141
+ unique_indices.sort()
1142
+ new = new.take(unique_indices)
1143
+ flat_found[n_uniq:n_uniq + new.size] = new
1144
+ n_uniq += new.size
1145
+ idx = found
1146
+ else:
1147
+ idx = self.permutation(pop_size)[:size]
1148
+ if shape is not None:
1149
+ idx.shape = shape
1150
+
1151
+ if shape is None and isinstance(idx, np.ndarray):
1152
+ # In most cases a scalar will have been made an array
1153
+ idx = idx.item(0)
1154
+
1155
+ #Use samples as indices for a if a is array-like
1156
+ if a.ndim == 0:
1157
+ return idx
1158
+
1159
+ if shape is not None and idx.ndim == 0:
1160
+ # If size == () then the user requested a 0-d array as opposed to
1161
+ # a scalar object when size is None. However a[idx] is always a
1162
+ # scalar and not an array. So this makes sure the result is an
1163
+ # array, taking into account that np.array(item) may not work
1164
+ # for object arrays.
1165
+ res = np.empty((), dtype=a.dtype)
1166
+ res[()] = a[idx]
1167
+ return res
1168
+
1169
+ return a[idx]
1170
+
1171
+
1172
+ def uniform(self, low=0.0, high=1.0, size=None):
1173
+ """
1174
+ uniform(low=0.0, high=1.0, size=None)
1175
+
1176
+ Draw samples from a uniform distribution.
1177
+
1178
+ Samples are uniformly distributed over the half-open interval
1179
+ ``[low, high)`` (includes low, but excludes high). In other words,
1180
+ any value within the given interval is equally likely to be drawn
1181
+ by `uniform`.
1182
+
1183
+ Parameters
1184
+ ----------
1185
+ low : float, optional
1186
+ Lower boundary of the output interval. All values generated will be
1187
+ greater than or equal to low. The default value is 0.
1188
+ high : float
1189
+ Upper boundary of the output interval. All values generated will be
1190
+ less than high. The default value is 1.0.
1191
+ size : int or tuple of ints, optional
1192
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1193
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1194
+ single value is returned.
1195
+
1196
+ Returns
1197
+ -------
1198
+ out : ndarray
1199
+ Drawn samples, with shape `size`.
1200
+
1201
+ See Also
1202
+ --------
1203
+ randint : Discrete uniform distribution, yielding integers.
1204
+ random_integers : Discrete uniform distribution over the closed
1205
+ interval ``[low, high]``.
1206
+ random_sample : Floats uniformly distributed over ``[0, 1)``.
1207
+ random : Alias for `random_sample`.
1208
+ rand : Convenience function that accepts dimensions as input, e.g.,
1209
+ ``rand(2,2)`` would generate a 2-by-2 array of floats,
1210
+ uniformly distributed over ``[0, 1)``.
1211
+
1212
+ Notes
1213
+ -----
1214
+ The probability density function of the uniform distribution is
1215
+
1216
+ .. math:: p(x) = \\frac{1}{b - a}
1217
+
1218
+ anywhere within the interval ``[a, b)``, and zero elsewhere.
1219
+
1220
+ Examples
1221
+ --------
1222
+ Draw samples from the distribution:
1223
+
1224
+ >>> s = np.random.uniform(-1,0,1000)
1225
+
1226
+ All values are within the given interval:
1227
+
1228
+ >>> np.all(s >= -1)
1229
+ True
1230
+ >>> np.all(s < 0)
1231
+ True
1232
+
1233
+ Display the histogram of the samples, along with the
1234
+ probability density function:
1235
+
1236
+ >>> import matplotlib.pyplot as plt
1237
+ >>> count, bins, ignored = plt.hist(s, 15, normed=True)
1238
+ >>> plt.plot(bins, np.ones_like(bins), linewidth=2, color='r')
1239
+ >>> plt.show()
1240
+
1241
+ """
1242
+ cdef ndarray olow, ohigh, odiff
1243
+ cdef double flow, fhigh, fscale
1244
+ cdef object temp
1245
+
1246
+ flow = PyFloat_AsDouble(low)
1247
+ fhigh = PyFloat_AsDouble(high)
1248
+
1249
+ fscale = fhigh - flow
1250
+ if not npy_isfinite(fscale):
1251
+ raise OverflowError('Range exceeds valid bounds')
1252
+
1253
+ if not PyErr_Occurred():
1254
+ return cont2_array_sc(self.internal_state, rk_uniform, size, flow,
1255
+ fscale, self.lock)
1256
+
1257
+ PyErr_Clear()
1258
+ olow = <ndarray>PyArray_FROM_OTF(low, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1259
+ ohigh = <ndarray>PyArray_FROM_OTF(high, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1260
+ temp = np.subtract(ohigh, olow)
1261
+ Py_INCREF(temp) # needed to get around Pyrex's automatic reference-counting
1262
+ # rules because EnsureArray steals a reference
1263
+ odiff = <ndarray>PyArray_EnsureArray(temp)
1264
+ return cont2_array(self.internal_state, rk_uniform, size, olow, odiff,
1265
+ self.lock)
1266
+
1267
+ def rand(self, *args):
1268
+ """
1269
+ rand(d0, d1, ..., dn)
1270
+
1271
+ Random values in a given shape.
1272
+
1273
+ Create an array of the given shape and propagate it with
1274
+ random samples from a uniform distribution
1275
+ over ``[0, 1)``.
1276
+
1277
+ Parameters
1278
+ ----------
1279
+ d0, d1, ..., dn : int, optional
1280
+ The dimensions of the returned array, should all be positive.
1281
+ If no argument is given a single Python float is returned.
1282
+
1283
+ Returns
1284
+ -------
1285
+ out : ndarray, shape ``(d0, d1, ..., dn)``
1286
+ Random values.
1287
+
1288
+ See Also
1289
+ --------
1290
+ random
1291
+
1292
+ Notes
1293
+ -----
1294
+ This is a convenience function. If you want an interface that
1295
+ takes a shape-tuple as the first argument, refer to
1296
+ np.random.random_sample .
1297
+
1298
+ Examples
1299
+ --------
1300
+ >>> np.random.rand(3,2)
1301
+ array([[ 0.14022471, 0.96360618], #random
1302
+ [ 0.37601032, 0.25528411], #random
1303
+ [ 0.49313049, 0.94909878]]) #random
1304
+
1305
+ """
1306
+ if len(args) == 0:
1307
+ return self.random_sample()
1308
+ else:
1309
+ return self.random_sample(size=args)
1310
+
1311
+ def randn(self, *args):
1312
+ """
1313
+ randn(d0, d1, ..., dn)
1314
+
1315
+ Return a sample (or samples) from the "standard normal" distribution.
1316
+
1317
+ If positive, int_like or int-convertible arguments are provided,
1318
+ `randn` generates an array of shape ``(d0, d1, ..., dn)``, filled
1319
+ with random floats sampled from a univariate "normal" (Gaussian)
1320
+ distribution of mean 0 and variance 1 (if any of the :math:`d_i` are
1321
+ floats, they are first converted to integers by truncation). A single
1322
+ float randomly sampled from the distribution is returned if no
1323
+ argument is provided.
1324
+
1325
+ This is a convenience function. If you want an interface that takes a
1326
+ tuple as the first argument, use `numpy.random.standard_normal` instead.
1327
+
1328
+ Parameters
1329
+ ----------
1330
+ d0, d1, ..., dn : int, optional
1331
+ The dimensions of the returned array, should be all positive.
1332
+ If no argument is given a single Python float is returned.
1333
+
1334
+ Returns
1335
+ -------
1336
+ Z : ndarray or float
1337
+ A ``(d0, d1, ..., dn)``-shaped array of floating-point samples from
1338
+ the standard normal distribution, or a single such float if
1339
+ no parameters were supplied.
1340
+
1341
+ See Also
1342
+ --------
1343
+ random.standard_normal : Similar, but takes a tuple as its argument.
1344
+
1345
+ Notes
1346
+ -----
1347
+ For random samples from :math:`N(\\mu, \\sigma^2)`, use:
1348
+
1349
+ ``sigma * np.random.randn(...) + mu``
1350
+
1351
+ Examples
1352
+ --------
1353
+ >>> np.random.randn()
1354
+ 2.1923875335537315 #random
1355
+
1356
+ Two-by-four array of samples from N(3, 6.25):
1357
+
1358
+ >>> 2.5 * np.random.randn(2, 4) + 3
1359
+ array([[-4.49401501, 4.00950034, -1.81814867, 7.29718677], #random
1360
+ [ 0.39924804, 4.68456316, 4.99394529, 4.84057254]]) #random
1361
+
1362
+ """
1363
+ if len(args) == 0:
1364
+ return self.standard_normal()
1365
+ else:
1366
+ return self.standard_normal(args)
1367
+
1368
+ def random_integers(self, low, high=None, size=None):
1369
+ """
1370
+ random_integers(low, high=None, size=None)
1371
+
1372
+ Return random integers between `low` and `high`, inclusive.
1373
+
1374
+ Return random integers from the "discrete uniform" distribution in the
1375
+ closed interval [`low`, `high`]. If `high` is None (the default),
1376
+ then results are from [1, `low`].
1377
+
1378
+ Parameters
1379
+ ----------
1380
+ low : int
1381
+ Lowest (signed) integer to be drawn from the distribution (unless
1382
+ ``high=None``, in which case this parameter is the *highest* such
1383
+ integer).
1384
+ high : int, optional
1385
+ If provided, the largest (signed) integer to be drawn from the
1386
+ distribution (see above for behavior if ``high=None``).
1387
+ size : int or tuple of ints, optional
1388
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1389
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1390
+ single value is returned.
1391
+
1392
+ Returns
1393
+ -------
1394
+ out : int or ndarray of ints
1395
+ `size`-shaped array of random integers from the appropriate
1396
+ distribution, or a single such random int if `size` not provided.
1397
+
1398
+ See Also
1399
+ --------
1400
+ random.randint : Similar to `random_integers`, only for the half-open
1401
+ interval [`low`, `high`), and 0 is the lowest value if `high` is
1402
+ omitted.
1403
+
1404
+ Notes
1405
+ -----
1406
+ To sample from N evenly spaced floating-point numbers between a and b,
1407
+ use::
1408
+
1409
+ a + (b - a) * (np.random.random_integers(N) - 1) / (N - 1.)
1410
+
1411
+ Examples
1412
+ --------
1413
+ >>> np.random.random_integers(5)
1414
+ 4
1415
+ >>> type(np.random.random_integers(5))
1416
+ <type 'int'>
1417
+ >>> np.random.random_integers(5, size=(3.,2.))
1418
+ array([[5, 4],
1419
+ [3, 3],
1420
+ [4, 5]])
1421
+
1422
+ Choose five random numbers from the set of five evenly-spaced
1423
+ numbers between 0 and 2.5, inclusive (*i.e.*, from the set
1424
+ :math:`{0, 5/8, 10/8, 15/8, 20/8}`):
1425
+
1426
+ >>> 2.5 * (np.random.random_integers(5, size=(5,)) - 1) / 4.
1427
+ array([ 0.625, 1.25 , 0.625, 0.625, 2.5 ])
1428
+
1429
+ Roll two six sided dice 1000 times and sum the results:
1430
+
1431
+ >>> d1 = np.random.random_integers(1, 6, 1000)
1432
+ >>> d2 = np.random.random_integers(1, 6, 1000)
1433
+ >>> dsums = d1 + d2
1434
+
1435
+ Display results as a histogram:
1436
+
1437
+ >>> import matplotlib.pyplot as plt
1438
+ >>> count, bins, ignored = plt.hist(dsums, 11, normed=True)
1439
+ >>> plt.show()
1440
+
1441
+ """
1442
+ if high is None:
1443
+ high = low
1444
+ low = 1
1445
+ return self.randint(low, high+1, size)
1446
+
1447
+ # Complicated, continuous distributions:
1448
+ def standard_normal(self, size=None):
1449
+ """
1450
+ standard_normal(size=None)
1451
+
1452
+ Draw samples from a standard Normal distribution (mean=0, stdev=1).
1453
+
1454
+ Parameters
1455
+ ----------
1456
+ size : int or tuple of ints, optional
1457
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1458
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1459
+ single value is returned.
1460
+
1461
+ Returns
1462
+ -------
1463
+ out : float or ndarray
1464
+ Drawn samples.
1465
+
1466
+ Examples
1467
+ --------
1468
+ >>> s = np.random.standard_normal(8000)
1469
+ >>> s
1470
+ array([ 0.6888893 , 0.78096262, -0.89086505, ..., 0.49876311, #random
1471
+ -0.38672696, -0.4685006 ]) #random
1472
+ >>> s.shape
1473
+ (8000,)
1474
+ >>> s = np.random.standard_normal(size=(3, 4, 2))
1475
+ >>> s.shape
1476
+ (3, 4, 2)
1477
+
1478
+ """
1479
+ return cont0_array(self.internal_state, rk_gauss, size, self.lock)
1480
+
1481
+ def normal(self, loc=0.0, scale=1.0, size=None):
1482
+ """
1483
+ normal(loc=0.0, scale=1.0, size=None)
1484
+
1485
+ Draw random samples from a normal (Gaussian) distribution.
1486
+
1487
+ The probability density function of the normal distribution, first
1488
+ derived by De Moivre and 200 years later by both Gauss and Laplace
1489
+ independently [2]_, is often called the bell curve because of
1490
+ its characteristic shape (see the example below).
1491
+
1492
+ The normal distributions occurs often in nature. For example, it
1493
+ describes the commonly occurring distribution of samples influenced
1494
+ by a large number of tiny, random disturbances, each with its own
1495
+ unique distribution [2]_.
1496
+
1497
+ Parameters
1498
+ ----------
1499
+ loc : float
1500
+ Mean ("centre") of the distribution.
1501
+ scale : float
1502
+ Standard deviation (spread or "width") of the distribution.
1503
+ size : int or tuple of ints, optional
1504
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1505
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1506
+ single value is returned.
1507
+
1508
+ See Also
1509
+ --------
1510
+ scipy.stats.distributions.norm : probability density function,
1511
+ distribution or cumulative density function, etc.
1512
+
1513
+ Notes
1514
+ -----
1515
+ The probability density for the Gaussian distribution is
1516
+
1517
+ .. math:: p(x) = \\frac{1}{\\sqrt{ 2 \\pi \\sigma^2 }}
1518
+ e^{ - \\frac{ (x - \\mu)^2 } {2 \\sigma^2} },
1519
+
1520
+ where :math:`\\mu` is the mean and :math:`\\sigma` the standard
1521
+ deviation. The square of the standard deviation, :math:`\\sigma^2`,
1522
+ is called the variance.
1523
+
1524
+ The function has its peak at the mean, and its "spread" increases with
1525
+ the standard deviation (the function reaches 0.607 times its maximum at
1526
+ :math:`x + \\sigma` and :math:`x - \\sigma` [2]_). This implies that
1527
+ `numpy.random.normal` is more likely to return samples lying close to
1528
+ the mean, rather than those far away.
1529
+
1530
+ References
1531
+ ----------
1532
+ .. [1] Wikipedia, "Normal distribution",
1533
+ http://en.wikipedia.org/wiki/Normal_distribution
1534
+ .. [2] P. R. Peebles Jr., "Central Limit Theorem" in "Probability,
1535
+ Random Variables and Random Signal Principles", 4th ed., 2001,
1536
+ pp. 51, 51, 125.
1537
+
1538
+ Examples
1539
+ --------
1540
+ Draw samples from the distribution:
1541
+
1542
+ >>> mu, sigma = 0, 0.1 # mean and standard deviation
1543
+ >>> s = np.random.normal(mu, sigma, 1000)
1544
+
1545
+ Verify the mean and the variance:
1546
+
1547
+ >>> abs(mu - np.mean(s)) < 0.01
1548
+ True
1549
+
1550
+ >>> abs(sigma - np.std(s, ddof=1)) < 0.01
1551
+ True
1552
+
1553
+ Display the histogram of the samples, along with
1554
+ the probability density function:
1555
+
1556
+ >>> import matplotlib.pyplot as plt
1557
+ >>> count, bins, ignored = plt.hist(s, 30, normed=True)
1558
+ >>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
1559
+ ... np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
1560
+ ... linewidth=2, color='r')
1561
+ >>> plt.show()
1562
+
1563
+ """
1564
+ cdef ndarray oloc, oscale
1565
+ cdef double floc, fscale
1566
+
1567
+ floc = PyFloat_AsDouble(loc)
1568
+ fscale = PyFloat_AsDouble(scale)
1569
+ if not PyErr_Occurred():
1570
+ if fscale <= 0:
1571
+ raise ValueError("scale <= 0")
1572
+ return cont2_array_sc(self.internal_state, rk_normal, size, floc,
1573
+ fscale, self.lock)
1574
+
1575
+ PyErr_Clear()
1576
+
1577
+ oloc = <ndarray>PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1578
+ oscale = <ndarray>PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1579
+ if np.any(np.less_equal(oscale, 0)):
1580
+ raise ValueError("scale <= 0")
1581
+ return cont2_array(self.internal_state, rk_normal, size, oloc, oscale,
1582
+ self.lock)
1583
+
1584
+ def beta(self, a, b, size=None):
1585
+ """
1586
+ beta(a, b, size=None)
1587
+
1588
+ Draw samples from a Beta distribution.
1589
+
1590
+ The Beta distribution is a special case of the Dirichlet distribution,
1591
+ and is related to the Gamma distribution. It has the probability
1592
+ distribution function
1593
+
1594
+ .. math:: f(x; a,b) = \\frac{1}{B(\\alpha, \\beta)} x^{\\alpha - 1}
1595
+ (1 - x)^{\\beta - 1},
1596
+
1597
+ where the normalisation, B, is the beta function,
1598
+
1599
+ .. math:: B(\\alpha, \\beta) = \\int_0^1 t^{\\alpha - 1}
1600
+ (1 - t)^{\\beta - 1} dt.
1601
+
1602
+ It is often seen in Bayesian inference and order statistics.
1603
+
1604
+ Parameters
1605
+ ----------
1606
+ a : float
1607
+ Alpha, non-negative.
1608
+ b : float
1609
+ Beta, non-negative.
1610
+ size : int or tuple of ints, optional
1611
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1612
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1613
+ single value is returned.
1614
+
1615
+ Returns
1616
+ -------
1617
+ out : ndarray
1618
+ Array of the given shape, containing values drawn from a
1619
+ Beta distribution.
1620
+
1621
+ """
1622
+ cdef ndarray oa, ob
1623
+ cdef double fa, fb
1624
+
1625
+ fa = PyFloat_AsDouble(a)
1626
+ fb = PyFloat_AsDouble(b)
1627
+ if not PyErr_Occurred():
1628
+ if fa <= 0:
1629
+ raise ValueError("a <= 0")
1630
+ if fb <= 0:
1631
+ raise ValueError("b <= 0")
1632
+ return cont2_array_sc(self.internal_state, rk_beta, size, fa, fb,
1633
+ self.lock)
1634
+
1635
+ PyErr_Clear()
1636
+
1637
+ oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1638
+ ob = <ndarray>PyArray_FROM_OTF(b, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1639
+ if np.any(np.less_equal(oa, 0)):
1640
+ raise ValueError("a <= 0")
1641
+ if np.any(np.less_equal(ob, 0)):
1642
+ raise ValueError("b <= 0")
1643
+ return cont2_array(self.internal_state, rk_beta, size, oa, ob,
1644
+ self.lock)
1645
+
1646
+ def exponential(self, scale=1.0, size=None):
1647
+ """
1648
+ exponential(scale=1.0, size=None)
1649
+
1650
+ Draw samples from an exponential distribution.
1651
+
1652
+ Its probability density function is
1653
+
1654
+ .. math:: f(x; \\frac{1}{\\beta}) = \\frac{1}{\\beta} \\exp(-\\frac{x}{\\beta}),
1655
+
1656
+ for ``x > 0`` and 0 elsewhere. :math:`\\beta` is the scale parameter,
1657
+ which is the inverse of the rate parameter :math:`\\lambda = 1/\\beta`.
1658
+ The rate parameter is an alternative, widely used parameterization
1659
+ of the exponential distribution [3]_.
1660
+
1661
+ The exponential distribution is a continuous analogue of the
1662
+ geometric distribution. It describes many common situations, such as
1663
+ the size of raindrops measured over many rainstorms [1]_, or the time
1664
+ between page requests to Wikipedia [2]_.
1665
+
1666
+ Parameters
1667
+ ----------
1668
+ scale : float
1669
+ The scale parameter, :math:`\\beta = 1/\\lambda`.
1670
+ size : int or tuple of ints, optional
1671
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1672
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1673
+ single value is returned.
1674
+
1675
+ References
1676
+ ----------
1677
+ .. [1] Peyton Z. Peebles Jr., "Probability, Random Variables and
1678
+ Random Signal Principles", 4th ed, 2001, p. 57.
1679
+ .. [2] "Poisson Process", Wikipedia,
1680
+ http://en.wikipedia.org/wiki/Poisson_process
1681
+ .. [3] "Exponential Distribution, Wikipedia,
1682
+ http://en.wikipedia.org/wiki/Exponential_distribution
1683
+
1684
+ """
1685
+ cdef ndarray oscale
1686
+ cdef double fscale
1687
+
1688
+ fscale = PyFloat_AsDouble(scale)
1689
+ if not PyErr_Occurred():
1690
+ if fscale <= 0:
1691
+ raise ValueError("scale <= 0")
1692
+ return cont1_array_sc(self.internal_state, rk_exponential, size,
1693
+ fscale, self.lock)
1694
+
1695
+ PyErr_Clear()
1696
+
1697
+ oscale = <ndarray> PyArray_FROM_OTF(scale, NPY_DOUBLE,
1698
+ NPY_ARRAY_ALIGNED)
1699
+ if np.any(np.less_equal(oscale, 0.0)):
1700
+ raise ValueError("scale <= 0")
1701
+ return cont1_array(self.internal_state, rk_exponential, size, oscale,
1702
+ self.lock)
1703
+
1704
+ def standard_exponential(self, size=None):
1705
+ """
1706
+ standard_exponential(size=None)
1707
+
1708
+ Draw samples from the standard exponential distribution.
1709
+
1710
+ `standard_exponential` is identical to the exponential distribution
1711
+ with a scale parameter of 1.
1712
+
1713
+ Parameters
1714
+ ----------
1715
+ size : int or tuple of ints, optional
1716
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1717
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1718
+ single value is returned.
1719
+
1720
+ Returns
1721
+ -------
1722
+ out : float or ndarray
1723
+ Drawn samples.
1724
+
1725
+ Examples
1726
+ --------
1727
+ Output a 3x8000 array:
1728
+
1729
+ >>> n = np.random.standard_exponential((3, 8000))
1730
+
1731
+ """
1732
+ return cont0_array(self.internal_state, rk_standard_exponential, size,
1733
+ self.lock)
1734
+
1735
+ def standard_gamma(self, shape, size=None):
1736
+ """
1737
+ standard_gamma(shape, size=None)
1738
+
1739
+ Draw samples from a standard Gamma distribution.
1740
+
1741
+ Samples are drawn from a Gamma distribution with specified parameters,
1742
+ shape (sometimes designated "k") and scale=1.
1743
+
1744
+ Parameters
1745
+ ----------
1746
+ shape : float
1747
+ Parameter, should be > 0.
1748
+ size : int or tuple of ints, optional
1749
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1750
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1751
+ single value is returned.
1752
+
1753
+ Returns
1754
+ -------
1755
+ samples : ndarray or scalar
1756
+ The drawn samples.
1757
+
1758
+ See Also
1759
+ --------
1760
+ scipy.stats.distributions.gamma : probability density function,
1761
+ distribution or cumulative density function, etc.
1762
+
1763
+ Notes
1764
+ -----
1765
+ The probability density for the Gamma distribution is
1766
+
1767
+ .. math:: p(x) = x^{k-1}\\frac{e^{-x/\\theta}}{\\theta^k\\Gamma(k)},
1768
+
1769
+ where :math:`k` is the shape and :math:`\\theta` the scale,
1770
+ and :math:`\\Gamma` is the Gamma function.
1771
+
1772
+ The Gamma distribution is often used to model the times to failure of
1773
+ electronic components, and arises naturally in processes for which the
1774
+ waiting times between Poisson distributed events are relevant.
1775
+
1776
+ References
1777
+ ----------
1778
+ .. [1] Weisstein, Eric W. "Gamma Distribution." From MathWorld--A
1779
+ Wolfram Web Resource.
1780
+ http://mathworld.wolfram.com/GammaDistribution.html
1781
+ .. [2] Wikipedia, "Gamma-distribution",
1782
+ http://en.wikipedia.org/wiki/Gamma-distribution
1783
+
1784
+ Examples
1785
+ --------
1786
+ Draw samples from the distribution:
1787
+
1788
+ >>> shape, scale = 2., 1. # mean and width
1789
+ >>> s = np.random.standard_gamma(shape, 1000000)
1790
+
1791
+ Display the histogram of the samples, along with
1792
+ the probability density function:
1793
+
1794
+ >>> import matplotlib.pyplot as plt
1795
+ >>> import scipy.special as sps
1796
+ >>> count, bins, ignored = plt.hist(s, 50, normed=True)
1797
+ >>> y = bins**(shape-1) * ((np.exp(-bins/scale))/ \\
1798
+ ... (sps.gamma(shape) * scale**shape))
1799
+ >>> plt.plot(bins, y, linewidth=2, color='r')
1800
+ >>> plt.show()
1801
+
1802
+ """
1803
+ cdef ndarray oshape
1804
+ cdef double fshape
1805
+
1806
+ fshape = PyFloat_AsDouble(shape)
1807
+ if not PyErr_Occurred():
1808
+ if fshape <= 0:
1809
+ raise ValueError("shape <= 0")
1810
+ return cont1_array_sc(self.internal_state, rk_standard_gamma,
1811
+ size, fshape, self.lock)
1812
+
1813
+ PyErr_Clear()
1814
+ oshape = <ndarray> PyArray_FROM_OTF(shape, NPY_DOUBLE,
1815
+ NPY_ARRAY_ALIGNED)
1816
+ if np.any(np.less_equal(oshape, 0.0)):
1817
+ raise ValueError("shape <= 0")
1818
+ return cont1_array(self.internal_state, rk_standard_gamma, size,
1819
+ oshape, self.lock)
1820
+
1821
+ def gamma(self, shape, scale=1.0, size=None):
1822
+ """
1823
+ gamma(shape, scale=1.0, size=None)
1824
+
1825
+ Draw samples from a Gamma distribution.
1826
+
1827
+ Samples are drawn from a Gamma distribution with specified parameters,
1828
+ `shape` (sometimes designated "k") and `scale` (sometimes designated
1829
+ "theta"), where both parameters are > 0.
1830
+
1831
+ Parameters
1832
+ ----------
1833
+ shape : scalar > 0
1834
+ The shape of the gamma distribution.
1835
+ scale : scalar > 0, optional
1836
+ The scale of the gamma distribution. Default is equal to 1.
1837
+ size : int or tuple of ints, optional
1838
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1839
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1840
+ single value is returned.
1841
+
1842
+ Returns
1843
+ -------
1844
+ out : ndarray, float
1845
+ Returns one sample unless `size` parameter is specified.
1846
+
1847
+ See Also
1848
+ --------
1849
+ scipy.stats.distributions.gamma : probability density function,
1850
+ distribution or cumulative density function, etc.
1851
+
1852
+ Notes
1853
+ -----
1854
+ The probability density for the Gamma distribution is
1855
+
1856
+ .. math:: p(x) = x^{k-1}\\frac{e^{-x/\\theta}}{\\theta^k\\Gamma(k)},
1857
+
1858
+ where :math:`k` is the shape and :math:`\\theta` the scale,
1859
+ and :math:`\\Gamma` is the Gamma function.
1860
+
1861
+ The Gamma distribution is often used to model the times to failure of
1862
+ electronic components, and arises naturally in processes for which the
1863
+ waiting times between Poisson distributed events are relevant.
1864
+
1865
+ References
1866
+ ----------
1867
+ .. [1] Weisstein, Eric W. "Gamma Distribution." From MathWorld--A
1868
+ Wolfram Web Resource.
1869
+ http://mathworld.wolfram.com/GammaDistribution.html
1870
+ .. [2] Wikipedia, "Gamma-distribution",
1871
+ http://en.wikipedia.org/wiki/Gamma-distribution
1872
+
1873
+ Examples
1874
+ --------
1875
+ Draw samples from the distribution:
1876
+
1877
+ >>> shape, scale = 2., 2. # mean and dispersion
1878
+ >>> s = np.random.gamma(shape, scale, 1000)
1879
+
1880
+ Display the histogram of the samples, along with
1881
+ the probability density function:
1882
+
1883
+ >>> import matplotlib.pyplot as plt
1884
+ >>> import scipy.special as sps
1885
+ >>> count, bins, ignored = plt.hist(s, 50, normed=True)
1886
+ >>> y = bins**(shape-1)*(np.exp(-bins/scale) /
1887
+ ... (sps.gamma(shape)*scale**shape))
1888
+ >>> plt.plot(bins, y, linewidth=2, color='r')
1889
+ >>> plt.show()
1890
+
1891
+ """
1892
+ cdef ndarray oshape, oscale
1893
+ cdef double fshape, fscale
1894
+
1895
+ fshape = PyFloat_AsDouble(shape)
1896
+ fscale = PyFloat_AsDouble(scale)
1897
+ if not PyErr_Occurred():
1898
+ if fshape <= 0:
1899
+ raise ValueError("shape <= 0")
1900
+ if fscale <= 0:
1901
+ raise ValueError("scale <= 0")
1902
+ return cont2_array_sc(self.internal_state, rk_gamma, size, fshape,
1903
+ fscale, self.lock)
1904
+
1905
+ PyErr_Clear()
1906
+ oshape = <ndarray>PyArray_FROM_OTF(shape, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1907
+ oscale = <ndarray>PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
1908
+ if np.any(np.less_equal(oshape, 0.0)):
1909
+ raise ValueError("shape <= 0")
1910
+ if np.any(np.less_equal(oscale, 0.0)):
1911
+ raise ValueError("scale <= 0")
1912
+ return cont2_array(self.internal_state, rk_gamma, size, oshape, oscale,
1913
+ self.lock)
1914
+
1915
+ def f(self, dfnum, dfden, size=None):
1916
+ """
1917
+ f(dfnum, dfden, size=None)
1918
+
1919
+ Draw samples from an F distribution.
1920
+
1921
+ Samples are drawn from an F distribution with specified parameters,
1922
+ `dfnum` (degrees of freedom in numerator) and `dfden` (degrees of
1923
+ freedom in denominator), where both parameters should be greater than
1924
+ zero.
1925
+
1926
+ The random variate of the F distribution (also known as the
1927
+ Fisher distribution) is a continuous probability distribution
1928
+ that arises in ANOVA tests, and is the ratio of two chi-square
1929
+ variates.
1930
+
1931
+ Parameters
1932
+ ----------
1933
+ dfnum : float
1934
+ Degrees of freedom in numerator. Should be greater than zero.
1935
+ dfden : float
1936
+ Degrees of freedom in denominator. Should be greater than zero.
1937
+ size : int or tuple of ints, optional
1938
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
1939
+ ``m * n * k`` samples are drawn. Default is None, in which case a
1940
+ single value is returned.
1941
+
1942
+ Returns
1943
+ -------
1944
+ samples : ndarray or scalar
1945
+ Samples from the Fisher distribution.
1946
+
1947
+ See Also
1948
+ --------
1949
+ scipy.stats.distributions.f : probability density function,
1950
+ distribution or cumulative density function, etc.
1951
+
1952
+ Notes
1953
+ -----
1954
+ The F statistic is used to compare in-group variances to between-group
1955
+ variances. Calculating the distribution depends on the sampling, and
1956
+ so it is a function of the respective degrees of freedom in the
1957
+ problem. The variable `dfnum` is the number of samples minus one, the
1958
+ between-groups degrees of freedom, while `dfden` is the within-groups
1959
+ degrees of freedom, the sum of the number of samples in each group
1960
+ minus the number of groups.
1961
+
1962
+ References
1963
+ ----------
1964
+ .. [1] Glantz, Stanton A. "Primer of Biostatistics.", McGraw-Hill,
1965
+ Fifth Edition, 2002.
1966
+ .. [2] Wikipedia, "F-distribution",
1967
+ http://en.wikipedia.org/wiki/F-distribution
1968
+
1969
+ Examples
1970
+ --------
1971
+ An example from Glantz[1], pp 47-40:
1972
+
1973
+ Two groups, children of diabetics (25 people) and children from people
1974
+ without diabetes (25 controls). Fasting blood glucose was measured,
1975
+ case group had a mean value of 86.1, controls had a mean value of
1976
+ 82.2. Standard deviations were 2.09 and 2.49 respectively. Are these
1977
+ data consistent with the null hypothesis that the parents diabetic
1978
+ status does not affect their children's blood glucose levels?
1979
+ Calculating the F statistic from the data gives a value of 36.01.
1980
+
1981
+ Draw samples from the distribution:
1982
+
1983
+ >>> dfnum = 1. # between group degrees of freedom
1984
+ >>> dfden = 48. # within groups degrees of freedom
1985
+ >>> s = np.random.f(dfnum, dfden, 1000)
1986
+
1987
+ The lower bound for the top 1% of the samples is :
1988
+
1989
+ >>> sort(s)[-10]
1990
+ 7.61988120985
1991
+
1992
+ So there is about a 1% chance that the F statistic will exceed 7.62,
1993
+ the measured value is 36, so the null hypothesis is rejected at the 1%
1994
+ level.
1995
+
1996
+ """
1997
+ cdef ndarray odfnum, odfden
1998
+ cdef double fdfnum, fdfden
1999
+
2000
+ fdfnum = PyFloat_AsDouble(dfnum)
2001
+ fdfden = PyFloat_AsDouble(dfden)
2002
+ if not PyErr_Occurred():
2003
+ if fdfnum <= 0:
2004
+ raise ValueError("shape <= 0")
2005
+ if fdfden <= 0:
2006
+ raise ValueError("scale <= 0")
2007
+ return cont2_array_sc(self.internal_state, rk_f, size, fdfnum,
2008
+ fdfden, self.lock)
2009
+
2010
+ PyErr_Clear()
2011
+
2012
+ odfnum = <ndarray>PyArray_FROM_OTF(dfnum, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2013
+ odfden = <ndarray>PyArray_FROM_OTF(dfden, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2014
+ if np.any(np.less_equal(odfnum, 0.0)):
2015
+ raise ValueError("dfnum <= 0")
2016
+ if np.any(np.less_equal(odfden, 0.0)):
2017
+ raise ValueError("dfden <= 0")
2018
+ return cont2_array(self.internal_state, rk_f, size, odfnum, odfden,
2019
+ self.lock)
2020
+
2021
+ def noncentral_f(self, dfnum, dfden, nonc, size=None):
2022
+ """
2023
+ noncentral_f(dfnum, dfden, nonc, size=None)
2024
+
2025
+ Draw samples from the noncentral F distribution.
2026
+
2027
+ Samples are drawn from an F distribution with specified parameters,
2028
+ `dfnum` (degrees of freedom in numerator) and `dfden` (degrees of
2029
+ freedom in denominator), where both parameters > 1.
2030
+ `nonc` is the non-centrality parameter.
2031
+
2032
+ Parameters
2033
+ ----------
2034
+ dfnum : int
2035
+ Parameter, should be > 1.
2036
+ dfden : int
2037
+ Parameter, should be > 1.
2038
+ nonc : float
2039
+ Parameter, should be >= 0.
2040
+ size : int or tuple of ints, optional
2041
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2042
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2043
+ single value is returned.
2044
+
2045
+ Returns
2046
+ -------
2047
+ samples : scalar or ndarray
2048
+ Drawn samples.
2049
+
2050
+ Notes
2051
+ -----
2052
+ When calculating the power of an experiment (power = probability of
2053
+ rejecting the null hypothesis when a specific alternative is true) the
2054
+ non-central F statistic becomes important. When the null hypothesis is
2055
+ true, the F statistic follows a central F distribution. When the null
2056
+ hypothesis is not true, then it follows a non-central F statistic.
2057
+
2058
+ References
2059
+ ----------
2060
+ .. [1] Weisstein, Eric W. "Noncentral F-Distribution."
2061
+ From MathWorld--A Wolfram Web Resource.
2062
+ http://mathworld.wolfram.com/NoncentralF-Distribution.html
2063
+ .. [2] Wikipedia, "Noncentral F distribution",
2064
+ http://en.wikipedia.org/wiki/Noncentral_F-distribution
2065
+
2066
+ Examples
2067
+ --------
2068
+ In a study, testing for a specific alternative to the null hypothesis
2069
+ requires use of the Noncentral F distribution. We need to calculate the
2070
+ area in the tail of the distribution that exceeds the value of the F
2071
+ distribution for the null hypothesis. We'll plot the two probability
2072
+ distributions for comparison.
2073
+
2074
+ >>> dfnum = 3 # between group deg of freedom
2075
+ >>> dfden = 20 # within groups degrees of freedom
2076
+ >>> nonc = 3.0
2077
+ >>> nc_vals = np.random.noncentral_f(dfnum, dfden, nonc, 1000000)
2078
+ >>> NF = np.histogram(nc_vals, bins=50, normed=True)
2079
+ >>> c_vals = np.random.f(dfnum, dfden, 1000000)
2080
+ >>> F = np.histogram(c_vals, bins=50, normed=True)
2081
+ >>> plt.plot(F[1][1:], F[0])
2082
+ >>> plt.plot(NF[1][1:], NF[0])
2083
+ >>> plt.show()
2084
+
2085
+ """
2086
+ cdef ndarray odfnum, odfden, ononc
2087
+ cdef double fdfnum, fdfden, fnonc
2088
+
2089
+ fdfnum = PyFloat_AsDouble(dfnum)
2090
+ fdfden = PyFloat_AsDouble(dfden)
2091
+ fnonc = PyFloat_AsDouble(nonc)
2092
+ if not PyErr_Occurred():
2093
+ if fdfnum <= 1:
2094
+ raise ValueError("dfnum <= 1")
2095
+ if fdfden <= 0:
2096
+ raise ValueError("dfden <= 0")
2097
+ if fnonc < 0:
2098
+ raise ValueError("nonc < 0")
2099
+ return cont3_array_sc(self.internal_state, rk_noncentral_f, size,
2100
+ fdfnum, fdfden, fnonc, self.lock)
2101
+
2102
+ PyErr_Clear()
2103
+
2104
+ odfnum = <ndarray>PyArray_FROM_OTF(dfnum, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2105
+ odfden = <ndarray>PyArray_FROM_OTF(dfden, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2106
+ ononc = <ndarray>PyArray_FROM_OTF(nonc, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2107
+
2108
+ if np.any(np.less_equal(odfnum, 1.0)):
2109
+ raise ValueError("dfnum <= 1")
2110
+ if np.any(np.less_equal(odfden, 0.0)):
2111
+ raise ValueError("dfden <= 0")
2112
+ if np.any(np.less(ononc, 0.0)):
2113
+ raise ValueError("nonc < 0")
2114
+ return cont3_array(self.internal_state, rk_noncentral_f, size, odfnum,
2115
+ odfden, ononc, self.lock)
2116
+
2117
+ def chisquare(self, df, size=None):
2118
+ """
2119
+ chisquare(df, size=None)
2120
+
2121
+ Draw samples from a chi-square distribution.
2122
+
2123
+ When `df` independent random variables, each with standard normal
2124
+ distributions (mean 0, variance 1), are squared and summed, the
2125
+ resulting distribution is chi-square (see Notes). This distribution
2126
+ is often used in hypothesis testing.
2127
+
2128
+ Parameters
2129
+ ----------
2130
+ df : int
2131
+ Number of degrees of freedom.
2132
+ size : int or tuple of ints, optional
2133
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2134
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2135
+ single value is returned.
2136
+
2137
+ Returns
2138
+ -------
2139
+ output : ndarray
2140
+ Samples drawn from the distribution, packed in a `size`-shaped
2141
+ array.
2142
+
2143
+ Raises
2144
+ ------
2145
+ ValueError
2146
+ When `df` <= 0 or when an inappropriate `size` (e.g. ``size=-1``)
2147
+ is given.
2148
+
2149
+ Notes
2150
+ -----
2151
+ The variable obtained by summing the squares of `df` independent,
2152
+ standard normally distributed random variables:
2153
+
2154
+ .. math:: Q = \\sum_{i=0}^{\\mathtt{df}} X^2_i
2155
+
2156
+ is chi-square distributed, denoted
2157
+
2158
+ .. math:: Q \\sim \\chi^2_k.
2159
+
2160
+ The probability density function of the chi-squared distribution is
2161
+
2162
+ .. math:: p(x) = \\frac{(1/2)^{k/2}}{\\Gamma(k/2)}
2163
+ x^{k/2 - 1} e^{-x/2},
2164
+
2165
+ where :math:`\\Gamma` is the gamma function,
2166
+
2167
+ .. math:: \\Gamma(x) = \\int_0^{-\\infty} t^{x - 1} e^{-t} dt.
2168
+
2169
+ References
2170
+ ----------
2171
+ .. [1] NIST "Engineering Statistics Handbook"
2172
+ http://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
2173
+
2174
+ Examples
2175
+ --------
2176
+ >>> np.random.chisquare(2,4)
2177
+ array([ 1.89920014, 9.00867716, 3.13710533, 5.62318272])
2178
+
2179
+ """
2180
+ cdef ndarray odf
2181
+ cdef double fdf
2182
+
2183
+ fdf = PyFloat_AsDouble(df)
2184
+ if not PyErr_Occurred():
2185
+ if fdf <= 0:
2186
+ raise ValueError("df <= 0")
2187
+ return cont1_array_sc(self.internal_state, rk_chisquare, size, fdf,
2188
+ self.lock)
2189
+
2190
+ PyErr_Clear()
2191
+
2192
+ odf = <ndarray>PyArray_FROM_OTF(df, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2193
+ if np.any(np.less_equal(odf, 0.0)):
2194
+ raise ValueError("df <= 0")
2195
+ return cont1_array(self.internal_state, rk_chisquare, size, odf,
2196
+ self.lock)
2197
+
2198
+ def noncentral_chisquare(self, df, nonc, size=None):
2199
+ """
2200
+ noncentral_chisquare(df, nonc, size=None)
2201
+
2202
+ Draw samples from a noncentral chi-square distribution.
2203
+
2204
+ The noncentral :math:`\\chi^2` distribution is a generalisation of
2205
+ the :math:`\\chi^2` distribution.
2206
+
2207
+ Parameters
2208
+ ----------
2209
+ df : int
2210
+ Degrees of freedom, should be > 0 as of Numpy 1.10,
2211
+ should be > 1 for earlier versions.
2212
+ nonc : float
2213
+ Non-centrality, should be > 0.
2214
+ size : int or tuple of ints, optional
2215
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2216
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2217
+ single value is returned.
2218
+
2219
+ Notes
2220
+ -----
2221
+ The probability density function for the noncentral Chi-square
2222
+ distribution is
2223
+
2224
+ .. math:: P(x;df,nonc) = \\sum^{\\infty}_{i=0}
2225
+ \\frac{e^{-nonc/2}(nonc/2)^{i}}{i!}
2226
+ \\P_{Y_{df+2i}}(x),
2227
+
2228
+ where :math:`Y_{q}` is the Chi-square with q degrees of freedom.
2229
+
2230
+ In Delhi (2007), it is noted that the noncentral chi-square is
2231
+ useful in bombing and coverage problems, the probability of
2232
+ killing the point target given by the noncentral chi-squared
2233
+ distribution.
2234
+
2235
+ References
2236
+ ----------
2237
+ .. [1] Delhi, M.S. Holla, "On a noncentral chi-square distribution in
2238
+ the analysis of weapon systems effectiveness", Metrika,
2239
+ Volume 15, Number 1 / December, 1970.
2240
+ .. [2] Wikipedia, "Noncentral chi-square distribution"
2241
+ http://en.wikipedia.org/wiki/Noncentral_chi-square_distribution
2242
+
2243
+ Examples
2244
+ --------
2245
+ Draw values from the distribution and plot the histogram
2246
+
2247
+ >>> import matplotlib.pyplot as plt
2248
+ >>> values = plt.hist(np.random.noncentral_chisquare(3, 20, 100000),
2249
+ ... bins=200, normed=True)
2250
+ >>> plt.show()
2251
+
2252
+ Draw values from a noncentral chisquare with very small noncentrality,
2253
+ and compare to a chisquare.
2254
+
2255
+ >>> plt.figure()
2256
+ >>> values = plt.hist(np.random.noncentral_chisquare(3, .0000001, 100000),
2257
+ ... bins=np.arange(0., 25, .1), normed=True)
2258
+ >>> values2 = plt.hist(np.random.chisquare(3, 100000),
2259
+ ... bins=np.arange(0., 25, .1), normed=True)
2260
+ >>> plt.plot(values[1][0:-1], values[0]-values2[0], 'ob')
2261
+ >>> plt.show()
2262
+
2263
+ Demonstrate how large values of non-centrality lead to a more symmetric
2264
+ distribution.
2265
+
2266
+ >>> plt.figure()
2267
+ >>> values = plt.hist(np.random.noncentral_chisquare(3, 20, 100000),
2268
+ ... bins=200, normed=True)
2269
+ >>> plt.show()
2270
+
2271
+ """
2272
+ cdef ndarray odf, ononc
2273
+ cdef double fdf, fnonc
2274
+ fdf = PyFloat_AsDouble(df)
2275
+ fnonc = PyFloat_AsDouble(nonc)
2276
+ if not PyErr_Occurred():
2277
+ if fdf <= 0:
2278
+ raise ValueError("df <= 0")
2279
+ if fnonc <= 0:
2280
+ raise ValueError("nonc <= 0")
2281
+ return cont2_array_sc(self.internal_state, rk_noncentral_chisquare,
2282
+ size, fdf, fnonc, self.lock)
2283
+
2284
+ PyErr_Clear()
2285
+
2286
+ odf = <ndarray>PyArray_FROM_OTF(df, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2287
+ ononc = <ndarray>PyArray_FROM_OTF(nonc, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2288
+ if np.any(np.less_equal(odf, 0.0)):
2289
+ raise ValueError("df <= 0")
2290
+ if np.any(np.less_equal(ononc, 0.0)):
2291
+ raise ValueError("nonc < 0")
2292
+ return cont2_array(self.internal_state, rk_noncentral_chisquare, size,
2293
+ odf, ononc, self.lock)
2294
+
2295
+ def standard_cauchy(self, size=None):
2296
+ """
2297
+ standard_cauchy(size=None)
2298
+
2299
+ Draw samples from a standard Cauchy distribution with mode = 0.
2300
+
2301
+ Also known as the Lorentz distribution.
2302
+
2303
+ Parameters
2304
+ ----------
2305
+ size : int or tuple of ints, optional
2306
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2307
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2308
+ single value is returned.
2309
+
2310
+ Returns
2311
+ -------
2312
+ samples : ndarray or scalar
2313
+ The drawn samples.
2314
+
2315
+ Notes
2316
+ -----
2317
+ The probability density function for the full Cauchy distribution is
2318
+
2319
+ .. math:: P(x; x_0, \\gamma) = \\frac{1}{\\pi \\gamma \\bigl[ 1+
2320
+ (\\frac{x-x_0}{\\gamma})^2 \\bigr] }
2321
+
2322
+ and the Standard Cauchy distribution just sets :math:`x_0=0` and
2323
+ :math:`\\gamma=1`
2324
+
2325
+ The Cauchy distribution arises in the solution to the driven harmonic
2326
+ oscillator problem, and also describes spectral line broadening. It
2327
+ also describes the distribution of values at which a line tilted at
2328
+ a random angle will cut the x axis.
2329
+
2330
+ When studying hypothesis tests that assume normality, seeing how the
2331
+ tests perform on data from a Cauchy distribution is a good indicator of
2332
+ their sensitivity to a heavy-tailed distribution, since the Cauchy looks
2333
+ very much like a Gaussian distribution, but with heavier tails.
2334
+
2335
+ References
2336
+ ----------
2337
+ .. [1] NIST/SEMATECH e-Handbook of Statistical Methods, "Cauchy
2338
+ Distribution",
2339
+ http://www.itl.nist.gov/div898/handbook/eda/section3/eda3663.htm
2340
+ .. [2] Weisstein, Eric W. "Cauchy Distribution." From MathWorld--A
2341
+ Wolfram Web Resource.
2342
+ http://mathworld.wolfram.com/CauchyDistribution.html
2343
+ .. [3] Wikipedia, "Cauchy distribution"
2344
+ http://en.wikipedia.org/wiki/Cauchy_distribution
2345
+
2346
+ Examples
2347
+ --------
2348
+ Draw samples and plot the distribution:
2349
+
2350
+ >>> s = np.random.standard_cauchy(1000000)
2351
+ >>> s = s[(s>-25) & (s<25)] # truncate distribution so it plots well
2352
+ >>> plt.hist(s, bins=100)
2353
+ >>> plt.show()
2354
+
2355
+ """
2356
+ return cont0_array(self.internal_state, rk_standard_cauchy, size,
2357
+ self.lock)
2358
+
2359
+ def standard_t(self, df, size=None):
2360
+ """
2361
+ standard_t(df, size=None)
2362
+
2363
+ Draw samples from a standard Student's t distribution with `df` degrees
2364
+ of freedom.
2365
+
2366
+ A special case of the hyperbolic distribution. As `df` gets
2367
+ large, the result resembles that of the standard normal
2368
+ distribution (`standard_normal`).
2369
+
2370
+ Parameters
2371
+ ----------
2372
+ df : int
2373
+ Degrees of freedom, should be > 0.
2374
+ size : int or tuple of ints, optional
2375
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2376
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2377
+ single value is returned.
2378
+
2379
+ Returns
2380
+ -------
2381
+ samples : ndarray or scalar
2382
+ Drawn samples.
2383
+
2384
+ Notes
2385
+ -----
2386
+ The probability density function for the t distribution is
2387
+
2388
+ .. math:: P(x, df) = \\frac{\\Gamma(\\frac{df+1}{2})}{\\sqrt{\\pi df}
2389
+ \\Gamma(\\frac{df}{2})}\\Bigl( 1+\\frac{x^2}{df} \\Bigr)^{-(df+1)/2}
2390
+
2391
+ The t test is based on an assumption that the data come from a
2392
+ Normal distribution. The t test provides a way to test whether
2393
+ the sample mean (that is the mean calculated from the data) is
2394
+ a good estimate of the true mean.
2395
+
2396
+ The derivation of the t-distribution was first published in
2397
+ 1908 by William Gisset while working for the Guinness Brewery
2398
+ in Dublin. Due to proprietary issues, he had to publish under
2399
+ a pseudonym, and so he used the name Student.
2400
+
2401
+ References
2402
+ ----------
2403
+ .. [1] Dalgaard, Peter, "Introductory Statistics With R",
2404
+ Springer, 2002.
2405
+ .. [2] Wikipedia, "Student's t-distribution"
2406
+ http://en.wikipedia.org/wiki/Student's_t-distribution
2407
+
2408
+ Examples
2409
+ --------
2410
+ From Dalgaard page 83 [1]_, suppose the daily energy intake for 11
2411
+ women in Kj is:
2412
+
2413
+ >>> intake = np.array([5260., 5470, 5640, 6180, 6390, 6515, 6805, 7515, \\
2414
+ ... 7515, 8230, 8770])
2415
+
2416
+ Does their energy intake deviate systematically from the recommended
2417
+ value of 7725 kJ?
2418
+
2419
+ We have 10 degrees of freedom, so is the sample mean within 95% of the
2420
+ recommended value?
2421
+
2422
+ >>> s = np.random.standard_t(10, size=100000)
2423
+ >>> np.mean(intake)
2424
+ 6753.636363636364
2425
+ >>> intake.std(ddof=1)
2426
+ 1142.1232221373727
2427
+
2428
+ Calculate the t statistic, setting the ddof parameter to the unbiased
2429
+ value so the divisor in the standard deviation will be degrees of
2430
+ freedom, N-1.
2431
+
2432
+ >>> t = (np.mean(intake)-7725)/(intake.std(ddof=1)/np.sqrt(len(intake)))
2433
+ >>> import matplotlib.pyplot as plt
2434
+ >>> h = plt.hist(s, bins=100, normed=True)
2435
+
2436
+ For a one-sided t-test, how far out in the distribution does the t
2437
+ statistic appear?
2438
+
2439
+ >>> np.sum(s<t) / float(len(s))
2440
+ 0.0090699999999999999 #random
2441
+
2442
+ So the p-value is about 0.009, which says the null hypothesis has a
2443
+ probability of about 99% of being true.
2444
+
2445
+ """
2446
+ cdef ndarray odf
2447
+ cdef double fdf
2448
+
2449
+ fdf = PyFloat_AsDouble(df)
2450
+ if not PyErr_Occurred():
2451
+ if fdf <= 0:
2452
+ raise ValueError("df <= 0")
2453
+ return cont1_array_sc(self.internal_state, rk_standard_t, size,
2454
+ fdf, self.lock)
2455
+
2456
+ PyErr_Clear()
2457
+
2458
+ odf = <ndarray> PyArray_FROM_OTF(df, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2459
+ if np.any(np.less_equal(odf, 0.0)):
2460
+ raise ValueError("df <= 0")
2461
+ return cont1_array(self.internal_state, rk_standard_t, size, odf,
2462
+ self.lock)
2463
+
2464
+ def vonmises(self, mu, kappa, size=None):
2465
+ """
2466
+ vonmises(mu, kappa, size=None)
2467
+
2468
+ Draw samples from a von Mises distribution.
2469
+
2470
+ Samples are drawn from a von Mises distribution with specified mode
2471
+ (mu) and dispersion (kappa), on the interval [-pi, pi].
2472
+
2473
+ The von Mises distribution (also known as the circular normal
2474
+ distribution) is a continuous probability distribution on the unit
2475
+ circle. It may be thought of as the circular analogue of the normal
2476
+ distribution.
2477
+
2478
+ Parameters
2479
+ ----------
2480
+ mu : float
2481
+ Mode ("center") of the distribution.
2482
+ kappa : float
2483
+ Dispersion of the distribution, has to be >=0.
2484
+ size : int or tuple of ints, optional
2485
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2486
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2487
+ single value is returned.
2488
+
2489
+ Returns
2490
+ -------
2491
+ samples : scalar or ndarray
2492
+ The returned samples, which are in the interval [-pi, pi].
2493
+
2494
+ See Also
2495
+ --------
2496
+ scipy.stats.distributions.vonmises : probability density function,
2497
+ distribution, or cumulative density function, etc.
2498
+
2499
+ Notes
2500
+ -----
2501
+ The probability density for the von Mises distribution is
2502
+
2503
+ .. math:: p(x) = \\frac{e^{\\kappa cos(x-\\mu)}}{2\\pi I_0(\\kappa)},
2504
+
2505
+ where :math:`\\mu` is the mode and :math:`\\kappa` the dispersion,
2506
+ and :math:`I_0(\\kappa)` is the modified Bessel function of order 0.
2507
+
2508
+ The von Mises is named for Richard Edler von Mises, who was born in
2509
+ Austria-Hungary, in what is now the Ukraine. He fled to the United
2510
+ States in 1939 and became a professor at Harvard. He worked in
2511
+ probability theory, aerodynamics, fluid mechanics, and philosophy of
2512
+ science.
2513
+
2514
+ References
2515
+ ----------
2516
+ .. [1] Abramowitz, M. and Stegun, I. A. (Eds.). "Handbook of
2517
+ Mathematical Functions with Formulas, Graphs, and Mathematical
2518
+ Tables, 9th printing," New York: Dover, 1972.
2519
+ .. [2] von Mises, R., "Mathematical Theory of Probability
2520
+ and Statistics", New York: Academic Press, 1964.
2521
+
2522
+ Examples
2523
+ --------
2524
+ Draw samples from the distribution:
2525
+
2526
+ >>> mu, kappa = 0.0, 4.0 # mean and dispersion
2527
+ >>> s = np.random.vonmises(mu, kappa, 1000)
2528
+
2529
+ Display the histogram of the samples, along with
2530
+ the probability density function:
2531
+
2532
+ >>> import matplotlib.pyplot as plt
2533
+ >>> from scipy.special import i0
2534
+ >>> plt.hist(s, 50, normed=True)
2535
+ >>> x = np.linspace(-np.pi, np.pi, num=51)
2536
+ >>> y = np.exp(kappa*np.cos(x-mu))/(2*np.pi*i0(kappa))
2537
+ >>> plt.plot(x, y, linewidth=2, color='r')
2538
+ >>> plt.show()
2539
+
2540
+ """
2541
+ cdef ndarray omu, okappa
2542
+ cdef double fmu, fkappa
2543
+
2544
+ fmu = PyFloat_AsDouble(mu)
2545
+ fkappa = PyFloat_AsDouble(kappa)
2546
+ if not PyErr_Occurred():
2547
+ if fkappa < 0:
2548
+ raise ValueError("kappa < 0")
2549
+ return cont2_array_sc(self.internal_state, rk_vonmises, size, fmu,
2550
+ fkappa, self.lock)
2551
+
2552
+ PyErr_Clear()
2553
+
2554
+ omu = <ndarray> PyArray_FROM_OTF(mu, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2555
+ okappa = <ndarray> PyArray_FROM_OTF(kappa, NPY_DOUBLE,
2556
+ NPY_ARRAY_ALIGNED)
2557
+ if np.any(np.less(okappa, 0.0)):
2558
+ raise ValueError("kappa < 0")
2559
+ return cont2_array(self.internal_state, rk_vonmises, size, omu, okappa,
2560
+ self.lock)
2561
+
2562
+ def pareto(self, a, size=None):
2563
+ """
2564
+ pareto(a, size=None)
2565
+
2566
+ Draw samples from a Pareto II or Lomax distribution with
2567
+ specified shape.
2568
+
2569
+ The Lomax or Pareto II distribution is a shifted Pareto
2570
+ distribution. The classical Pareto distribution can be
2571
+ obtained from the Lomax distribution by adding 1 and
2572
+ multiplying by the scale parameter ``m`` (see Notes). The
2573
+ smallest value of the Lomax distribution is zero while for the
2574
+ classical Pareto distribution it is ``mu``, where the standard
2575
+ Pareto distribution has location ``mu = 1``. Lomax can also
2576
+ be considered as a simplified version of the Generalized
2577
+ Pareto distribution (available in SciPy), with the scale set
2578
+ to one and the location set to zero.
2579
+
2580
+ The Pareto distribution must be greater than zero, and is
2581
+ unbounded above. It is also known as the "80-20 rule". In
2582
+ this distribution, 80 percent of the weights are in the lowest
2583
+ 20 percent of the range, while the other 20 percent fill the
2584
+ remaining 80 percent of the range.
2585
+
2586
+ Parameters
2587
+ ----------
2588
+ shape : float, > 0.
2589
+ Shape of the distribution.
2590
+ size : int or tuple of ints, optional
2591
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2592
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2593
+ single value is returned.
2594
+
2595
+ See Also
2596
+ --------
2597
+ scipy.stats.distributions.lomax.pdf : probability density function,
2598
+ distribution or cumulative density function, etc.
2599
+ scipy.stats.distributions.genpareto.pdf : probability density function,
2600
+ distribution or cumulative density function, etc.
2601
+
2602
+ Notes
2603
+ -----
2604
+ The probability density for the Pareto distribution is
2605
+
2606
+ .. math:: p(x) = \\frac{am^a}{x^{a+1}}
2607
+
2608
+ where :math:`a` is the shape and :math:`m` the scale.
2609
+
2610
+ The Pareto distribution, named after the Italian economist
2611
+ Vilfredo Pareto, is a power law probability distribution
2612
+ useful in many real world problems. Outside the field of
2613
+ economics it is generally referred to as the Bradford
2614
+ distribution. Pareto developed the distribution to describe
2615
+ the distribution of wealth in an economy. It has also found
2616
+ use in insurance, web page access statistics, oil field sizes,
2617
+ and many other problems, including the download frequency for
2618
+ projects in Sourceforge [1]_. It is one of the so-called
2619
+ "fat-tailed" distributions.
2620
+
2621
+
2622
+ References
2623
+ ----------
2624
+ .. [1] Francis Hunt and Paul Johnson, On the Pareto Distribution of
2625
+ Sourceforge projects.
2626
+ .. [2] Pareto, V. (1896). Course of Political Economy. Lausanne.
2627
+ .. [3] Reiss, R.D., Thomas, M.(2001), Statistical Analysis of Extreme
2628
+ Values, Birkhauser Verlag, Basel, pp 23-30.
2629
+ .. [4] Wikipedia, "Pareto distribution",
2630
+ http://en.wikipedia.org/wiki/Pareto_distribution
2631
+
2632
+ Examples
2633
+ --------
2634
+ Draw samples from the distribution:
2635
+
2636
+ >>> a, m = 3., 2. # shape and mode
2637
+ >>> s = (np.random.pareto(a, 1000) + 1) * m
2638
+
2639
+ Display the histogram of the samples, along with the probability
2640
+ density function:
2641
+
2642
+ >>> import matplotlib.pyplot as plt
2643
+ >>> count, bins, _ = plt.hist(s, 100, normed=True)
2644
+ >>> fit = a*m**a / bins**(a+1)
2645
+ >>> plt.plot(bins, max(count)*fit/max(fit), linewidth=2, color='r')
2646
+ >>> plt.show()
2647
+
2648
+ """
2649
+ cdef ndarray oa
2650
+ cdef double fa
2651
+
2652
+ fa = PyFloat_AsDouble(a)
2653
+ if not PyErr_Occurred():
2654
+ if fa <= 0:
2655
+ raise ValueError("a <= 0")
2656
+ return cont1_array_sc(self.internal_state, rk_pareto, size, fa,
2657
+ self.lock)
2658
+
2659
+ PyErr_Clear()
2660
+
2661
+ oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2662
+ if np.any(np.less_equal(oa, 0.0)):
2663
+ raise ValueError("a <= 0")
2664
+ return cont1_array(self.internal_state, rk_pareto, size, oa, self.lock)
2665
+
2666
+ def weibull(self, a, size=None):
2667
+ """
2668
+ weibull(a, size=None)
2669
+
2670
+ Draw samples from a Weibull distribution.
2671
+
2672
+ Draw samples from a 1-parameter Weibull distribution with the given
2673
+ shape parameter `a`.
2674
+
2675
+ .. math:: X = (-ln(U))^{1/a}
2676
+
2677
+ Here, U is drawn from the uniform distribution over (0,1].
2678
+
2679
+ The more common 2-parameter Weibull, including a scale parameter
2680
+ :math:`\\lambda` is just :math:`X = \\lambda(-ln(U))^{1/a}`.
2681
+
2682
+ Parameters
2683
+ ----------
2684
+ a : float
2685
+ Shape of the distribution.
2686
+ size : int or tuple of ints, optional
2687
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2688
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2689
+ single value is returned.
2690
+
2691
+ Returns
2692
+ -------
2693
+ samples : ndarray
2694
+
2695
+ See Also
2696
+ --------
2697
+ scipy.stats.distributions.weibull_max
2698
+ scipy.stats.distributions.weibull_min
2699
+ scipy.stats.distributions.genextreme
2700
+ gumbel
2701
+
2702
+ Notes
2703
+ -----
2704
+ The Weibull (or Type III asymptotic extreme value distribution
2705
+ for smallest values, SEV Type III, or Rosin-Rammler
2706
+ distribution) is one of a class of Generalized Extreme Value
2707
+ (GEV) distributions used in modeling extreme value problems.
2708
+ This class includes the Gumbel and Frechet distributions.
2709
+
2710
+ The probability density for the Weibull distribution is
2711
+
2712
+ .. math:: p(x) = \\frac{a}
2713
+ {\\lambda}(\\frac{x}{\\lambda})^{a-1}e^{-(x/\\lambda)^a},
2714
+
2715
+ where :math:`a` is the shape and :math:`\\lambda` the scale.
2716
+
2717
+ The function has its peak (the mode) at
2718
+ :math:`\\lambda(\\frac{a-1}{a})^{1/a}`.
2719
+
2720
+ When ``a = 1``, the Weibull distribution reduces to the exponential
2721
+ distribution.
2722
+
2723
+ References
2724
+ ----------
2725
+ .. [1] Waloddi Weibull, Royal Technical University, Stockholm,
2726
+ 1939 "A Statistical Theory Of The Strength Of Materials",
2727
+ Ingeniorsvetenskapsakademiens Handlingar Nr 151, 1939,
2728
+ Generalstabens Litografiska Anstalts Forlag, Stockholm.
2729
+ .. [2] Waloddi Weibull, "A Statistical Distribution Function of
2730
+ Wide Applicability", Journal Of Applied Mechanics ASME Paper
2731
+ 1951.
2732
+ .. [3] Wikipedia, "Weibull distribution",
2733
+ http://en.wikipedia.org/wiki/Weibull_distribution
2734
+
2735
+ Examples
2736
+ --------
2737
+ Draw samples from the distribution:
2738
+
2739
+ >>> a = 5. # shape
2740
+ >>> s = np.random.weibull(a, 1000)
2741
+
2742
+ Display the histogram of the samples, along with
2743
+ the probability density function:
2744
+
2745
+ >>> import matplotlib.pyplot as plt
2746
+ >>> x = np.arange(1,100.)/50.
2747
+ >>> def weib(x,n,a):
2748
+ ... return (a / n) * (x / n)**(a - 1) * np.exp(-(x / n)**a)
2749
+
2750
+ >>> count, bins, ignored = plt.hist(np.random.weibull(5.,1000))
2751
+ >>> x = np.arange(1,100.)/50.
2752
+ >>> scale = count.max()/weib(x, 1., 5.).max()
2753
+ >>> plt.plot(x, weib(x, 1., 5.)*scale)
2754
+ >>> plt.show()
2755
+
2756
+ """
2757
+ cdef ndarray oa
2758
+ cdef double fa
2759
+
2760
+ fa = PyFloat_AsDouble(a)
2761
+ if not PyErr_Occurred():
2762
+ if fa <= 0:
2763
+ raise ValueError("a <= 0")
2764
+ return cont1_array_sc(self.internal_state, rk_weibull, size, fa,
2765
+ self.lock)
2766
+
2767
+ PyErr_Clear()
2768
+
2769
+ oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2770
+ if np.any(np.less_equal(oa, 0.0)):
2771
+ raise ValueError("a <= 0")
2772
+ return cont1_array(self.internal_state, rk_weibull, size, oa,
2773
+ self.lock)
2774
+
2775
+ def power(self, a, size=None):
2776
+ """
2777
+ power(a, size=None)
2778
+
2779
+ Draws samples in [0, 1] from a power distribution with positive
2780
+ exponent a - 1.
2781
+
2782
+ Also known as the power function distribution.
2783
+
2784
+ Parameters
2785
+ ----------
2786
+ a : float
2787
+ parameter, > 0
2788
+ size : int or tuple of ints, optional
2789
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2790
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2791
+ single value is returned.
2792
+
2793
+ Returns
2794
+ -------
2795
+ samples : ndarray or scalar
2796
+ The returned samples lie in [0, 1].
2797
+
2798
+ Raises
2799
+ ------
2800
+ ValueError
2801
+ If a < 1.
2802
+
2803
+ Notes
2804
+ -----
2805
+ The probability density function is
2806
+
2807
+ .. math:: P(x; a) = ax^{a-1}, 0 \\le x \\le 1, a>0.
2808
+
2809
+ The power function distribution is just the inverse of the Pareto
2810
+ distribution. It may also be seen as a special case of the Beta
2811
+ distribution.
2812
+
2813
+ It is used, for example, in modeling the over-reporting of insurance
2814
+ claims.
2815
+
2816
+ References
2817
+ ----------
2818
+ .. [1] Christian Kleiber, Samuel Kotz, "Statistical size distributions
2819
+ in economics and actuarial sciences", Wiley, 2003.
2820
+ .. [2] Heckert, N. A. and Filliben, James J. "NIST Handbook 148:
2821
+ Dataplot Reference Manual, Volume 2: Let Subcommands and Library
2822
+ Functions", National Institute of Standards and Technology
2823
+ Handbook Series, June 2003.
2824
+ http://www.itl.nist.gov/div898/software/dataplot/refman2/auxillar/powpdf.pdf
2825
+
2826
+ Examples
2827
+ --------
2828
+ Draw samples from the distribution:
2829
+
2830
+ >>> a = 5. # shape
2831
+ >>> samples = 1000
2832
+ >>> s = np.random.power(a, samples)
2833
+
2834
+ Display the histogram of the samples, along with
2835
+ the probability density function:
2836
+
2837
+ >>> import matplotlib.pyplot as plt
2838
+ >>> count, bins, ignored = plt.hist(s, bins=30)
2839
+ >>> x = np.linspace(0, 1, 100)
2840
+ >>> y = a*x**(a-1.)
2841
+ >>> normed_y = samples*np.diff(bins)[0]*y
2842
+ >>> plt.plot(x, normed_y)
2843
+ >>> plt.show()
2844
+
2845
+ Compare the power function distribution to the inverse of the Pareto.
2846
+
2847
+ >>> from scipy import stats
2848
+ >>> rvs = np.random.power(5, 1000000)
2849
+ >>> rvsp = np.random.pareto(5, 1000000)
2850
+ >>> xx = np.linspace(0,1,100)
2851
+ >>> powpdf = stats.powerlaw.pdf(xx,5)
2852
+
2853
+ >>> plt.figure()
2854
+ >>> plt.hist(rvs, bins=50, normed=True)
2855
+ >>> plt.plot(xx,powpdf,'r-')
2856
+ >>> plt.title('np.random.power(5)')
2857
+
2858
+ >>> plt.figure()
2859
+ >>> plt.hist(1./(1.+rvsp), bins=50, normed=True)
2860
+ >>> plt.plot(xx,powpdf,'r-')
2861
+ >>> plt.title('inverse of 1 + np.random.pareto(5)')
2862
+
2863
+ >>> plt.figure()
2864
+ >>> plt.hist(1./(1.+rvsp), bins=50, normed=True)
2865
+ >>> plt.plot(xx,powpdf,'r-')
2866
+ >>> plt.title('inverse of stats.pareto(5)')
2867
+
2868
+ """
2869
+ cdef ndarray oa
2870
+ cdef double fa
2871
+
2872
+ fa = PyFloat_AsDouble(a)
2873
+ if not PyErr_Occurred():
2874
+ if fa <= 0:
2875
+ raise ValueError("a <= 0")
2876
+ return cont1_array_sc(self.internal_state, rk_power, size, fa,
2877
+ self.lock)
2878
+
2879
+ PyErr_Clear()
2880
+
2881
+ oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2882
+ if np.any(np.less_equal(oa, 0.0)):
2883
+ raise ValueError("a <= 0")
2884
+ return cont1_array(self.internal_state, rk_power, size, oa, self.lock)
2885
+
2886
+ def laplace(self, loc=0.0, scale=1.0, size=None):
2887
+ """
2888
+ laplace(loc=0.0, scale=1.0, size=None)
2889
+
2890
+ Draw samples from the Laplace or double exponential distribution with
2891
+ specified location (or mean) and scale (decay).
2892
+
2893
+ The Laplace distribution is similar to the Gaussian/normal distribution,
2894
+ but is sharper at the peak and has fatter tails. It represents the
2895
+ difference between two independent, identically distributed exponential
2896
+ random variables.
2897
+
2898
+ Parameters
2899
+ ----------
2900
+ loc : float, optional
2901
+ The position, :math:`\\mu`, of the distribution peak.
2902
+ scale : float, optional
2903
+ :math:`\\lambda`, the exponential decay.
2904
+ size : int or tuple of ints, optional
2905
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
2906
+ ``m * n * k`` samples are drawn. Default is None, in which case a
2907
+ single value is returned.
2908
+
2909
+ Returns
2910
+ -------
2911
+ samples : ndarray or float
2912
+
2913
+ Notes
2914
+ -----
2915
+ It has the probability density function
2916
+
2917
+ .. math:: f(x; \\mu, \\lambda) = \\frac{1}{2\\lambda}
2918
+ \\exp\\left(-\\frac{|x - \\mu|}{\\lambda}\\right).
2919
+
2920
+ The first law of Laplace, from 1774, states that the frequency
2921
+ of an error can be expressed as an exponential function of the
2922
+ absolute magnitude of the error, which leads to the Laplace
2923
+ distribution. For many problems in economics and health
2924
+ sciences, this distribution seems to model the data better
2925
+ than the standard Gaussian distribution.
2926
+
2927
+ References
2928
+ ----------
2929
+ .. [1] Abramowitz, M. and Stegun, I. A. (Eds.). "Handbook of
2930
+ Mathematical Functions with Formulas, Graphs, and Mathematical
2931
+ Tables, 9th printing," New York: Dover, 1972.
2932
+ .. [2] Kotz, Samuel, et. al. "The Laplace Distribution and
2933
+ Generalizations, " Birkhauser, 2001.
2934
+ .. [3] Weisstein, Eric W. "Laplace Distribution."
2935
+ From MathWorld--A Wolfram Web Resource.
2936
+ http://mathworld.wolfram.com/LaplaceDistribution.html
2937
+ .. [4] Wikipedia, "Laplace Distribution",
2938
+ http://en.wikipedia.org/wiki/Laplace_distribution
2939
+
2940
+ Examples
2941
+ --------
2942
+ Draw samples from the distribution
2943
+
2944
+ >>> loc, scale = 0., 1.
2945
+ >>> s = np.random.laplace(loc, scale, 1000)
2946
+
2947
+ Display the histogram of the samples, along with
2948
+ the probability density function:
2949
+
2950
+ >>> import matplotlib.pyplot as plt
2951
+ >>> count, bins, ignored = plt.hist(s, 30, normed=True)
2952
+ >>> x = np.arange(-8., 8., .01)
2953
+ >>> pdf = np.exp(-abs(x-loc)/scale)/(2.*scale)
2954
+ >>> plt.plot(x, pdf)
2955
+
2956
+ Plot Gaussian for comparison:
2957
+
2958
+ >>> g = (1/(scale * np.sqrt(2 * np.pi)) *
2959
+ ... np.exp(-(x - loc)**2 / (2 * scale**2)))
2960
+ >>> plt.plot(x,g)
2961
+
2962
+ """
2963
+ cdef ndarray oloc, oscale
2964
+ cdef double floc, fscale
2965
+
2966
+ floc = PyFloat_AsDouble(loc)
2967
+ fscale = PyFloat_AsDouble(scale)
2968
+ if not PyErr_Occurred():
2969
+ if fscale <= 0:
2970
+ raise ValueError("scale <= 0")
2971
+ return cont2_array_sc(self.internal_state, rk_laplace, size, floc,
2972
+ fscale, self.lock)
2973
+
2974
+ PyErr_Clear()
2975
+ oloc = PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2976
+ oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
2977
+ if np.any(np.less_equal(oscale, 0.0)):
2978
+ raise ValueError("scale <= 0")
2979
+ return cont2_array(self.internal_state, rk_laplace, size, oloc, oscale,
2980
+ self.lock)
2981
+
2982
+ def gumbel(self, loc=0.0, scale=1.0, size=None):
2983
+ """
2984
+ gumbel(loc=0.0, scale=1.0, size=None)
2985
+
2986
+ Draw samples from a Gumbel distribution.
2987
+
2988
+ Draw samples from a Gumbel distribution with specified location and
2989
+ scale. For more information on the Gumbel distribution, see
2990
+ Notes and References below.
2991
+
2992
+ Parameters
2993
+ ----------
2994
+ loc : float
2995
+ The location of the mode of the distribution.
2996
+ scale : float
2997
+ The scale parameter of the distribution.
2998
+ size : int or tuple of ints, optional
2999
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3000
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3001
+ single value is returned.
3002
+
3003
+ Returns
3004
+ -------
3005
+ samples : ndarray or scalar
3006
+
3007
+ See Also
3008
+ --------
3009
+ scipy.stats.gumbel_l
3010
+ scipy.stats.gumbel_r
3011
+ scipy.stats.genextreme
3012
+ weibull
3013
+
3014
+ Notes
3015
+ -----
3016
+ The Gumbel (or Smallest Extreme Value (SEV) or the Smallest Extreme
3017
+ Value Type I) distribution is one of a class of Generalized Extreme
3018
+ Value (GEV) distributions used in modeling extreme value problems.
3019
+ The Gumbel is a special case of the Extreme Value Type I distribution
3020
+ for maximums from distributions with "exponential-like" tails.
3021
+
3022
+ The probability density for the Gumbel distribution is
3023
+
3024
+ .. math:: p(x) = \\frac{e^{-(x - \\mu)/ \\beta}}{\\beta} e^{ -e^{-(x - \\mu)/
3025
+ \\beta}},
3026
+
3027
+ where :math:`\\mu` is the mode, a location parameter, and
3028
+ :math:`\\beta` is the scale parameter.
3029
+
3030
+ The Gumbel (named for German mathematician Emil Julius Gumbel) was used
3031
+ very early in the hydrology literature, for modeling the occurrence of
3032
+ flood events. It is also used for modeling maximum wind speed and
3033
+ rainfall rates. It is a "fat-tailed" distribution - the probability of
3034
+ an event in the tail of the distribution is larger than if one used a
3035
+ Gaussian, hence the surprisingly frequent occurrence of 100-year
3036
+ floods. Floods were initially modeled as a Gaussian process, which
3037
+ underestimated the frequency of extreme events.
3038
+
3039
+ It is one of a class of extreme value distributions, the Generalized
3040
+ Extreme Value (GEV) distributions, which also includes the Weibull and
3041
+ Frechet.
3042
+
3043
+ The function has a mean of :math:`\\mu + 0.57721\\beta` and a variance
3044
+ of :math:`\\frac{\\pi^2}{6}\\beta^2`.
3045
+
3046
+ References
3047
+ ----------
3048
+ .. [1] Gumbel, E. J., "Statistics of Extremes,"
3049
+ New York: Columbia University Press, 1958.
3050
+ .. [2] Reiss, R.-D. and Thomas, M., "Statistical Analysis of Extreme
3051
+ Values from Insurance, Finance, Hydrology and Other Fields,"
3052
+ Basel: Birkhauser Verlag, 2001.
3053
+
3054
+ Examples
3055
+ --------
3056
+ Draw samples from the distribution:
3057
+
3058
+ >>> mu, beta = 0, 0.1 # location and scale
3059
+ >>> s = np.random.gumbel(mu, beta, 1000)
3060
+
3061
+ Display the histogram of the samples, along with
3062
+ the probability density function:
3063
+
3064
+ >>> import matplotlib.pyplot as plt
3065
+ >>> count, bins, ignored = plt.hist(s, 30, normed=True)
3066
+ >>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
3067
+ ... * np.exp( -np.exp( -(bins - mu) /beta) ),
3068
+ ... linewidth=2, color='r')
3069
+ >>> plt.show()
3070
+
3071
+ Show how an extreme value distribution can arise from a Gaussian process
3072
+ and compare to a Gaussian:
3073
+
3074
+ >>> means = []
3075
+ >>> maxima = []
3076
+ >>> for i in range(0,1000) :
3077
+ ... a = np.random.normal(mu, beta, 1000)
3078
+ ... means.append(a.mean())
3079
+ ... maxima.append(a.max())
3080
+ >>> count, bins, ignored = plt.hist(maxima, 30, normed=True)
3081
+ >>> beta = np.std(maxima)*np.pi/np.sqrt(6)
3082
+ >>> mu = np.mean(maxima) - 0.57721*beta
3083
+ >>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
3084
+ ... * np.exp(-np.exp(-(bins - mu)/beta)),
3085
+ ... linewidth=2, color='r')
3086
+ >>> plt.plot(bins, 1/(beta * np.sqrt(2 * np.pi))
3087
+ ... * np.exp(-(bins - mu)**2 / (2 * beta**2)),
3088
+ ... linewidth=2, color='g')
3089
+ >>> plt.show()
3090
+
3091
+ """
3092
+ cdef ndarray oloc, oscale
3093
+ cdef double floc, fscale
3094
+
3095
+ floc = PyFloat_AsDouble(loc)
3096
+ fscale = PyFloat_AsDouble(scale)
3097
+ if not PyErr_Occurred():
3098
+ if fscale <= 0:
3099
+ raise ValueError("scale <= 0")
3100
+ return cont2_array_sc(self.internal_state, rk_gumbel, size, floc,
3101
+ fscale, self.lock)
3102
+
3103
+ PyErr_Clear()
3104
+ oloc = PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3105
+ oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3106
+ if np.any(np.less_equal(oscale, 0.0)):
3107
+ raise ValueError("scale <= 0")
3108
+ return cont2_array(self.internal_state, rk_gumbel, size, oloc, oscale,
3109
+ self.lock)
3110
+
3111
+ def logistic(self, loc=0.0, scale=1.0, size=None):
3112
+ """
3113
+ logistic(loc=0.0, scale=1.0, size=None)
3114
+
3115
+ Draw samples from a logistic distribution.
3116
+
3117
+ Samples are drawn from a logistic distribution with specified
3118
+ parameters, loc (location or mean, also median), and scale (>0).
3119
+
3120
+ Parameters
3121
+ ----------
3122
+ loc : float
3123
+
3124
+ scale : float > 0.
3125
+
3126
+ size : int or tuple of ints, optional
3127
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3128
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3129
+ single value is returned.
3130
+
3131
+ Returns
3132
+ -------
3133
+ samples : ndarray or scalar
3134
+ where the values are all integers in [0, n].
3135
+
3136
+ See Also
3137
+ --------
3138
+ scipy.stats.distributions.logistic : probability density function,
3139
+ distribution or cumulative density function, etc.
3140
+
3141
+ Notes
3142
+ -----
3143
+ The probability density for the Logistic distribution is
3144
+
3145
+ .. math:: P(x) = P(x) = \\frac{e^{-(x-\\mu)/s}}{s(1+e^{-(x-\\mu)/s})^2},
3146
+
3147
+ where :math:`\\mu` = location and :math:`s` = scale.
3148
+
3149
+ The Logistic distribution is used in Extreme Value problems where it
3150
+ can act as a mixture of Gumbel distributions, in Epidemiology, and by
3151
+ the World Chess Federation (FIDE) where it is used in the Elo ranking
3152
+ system, assuming the performance of each player is a logistically
3153
+ distributed random variable.
3154
+
3155
+ References
3156
+ ----------
3157
+ .. [1] Reiss, R.-D. and Thomas M. (2001), "Statistical Analysis of
3158
+ Extreme Values, from Insurance, Finance, Hydrology and Other
3159
+ Fields," Birkhauser Verlag, Basel, pp 132-133.
3160
+ .. [2] Weisstein, Eric W. "Logistic Distribution." From
3161
+ MathWorld--A Wolfram Web Resource.
3162
+ http://mathworld.wolfram.com/LogisticDistribution.html
3163
+ .. [3] Wikipedia, "Logistic-distribution",
3164
+ http://en.wikipedia.org/wiki/Logistic_distribution
3165
+
3166
+ Examples
3167
+ --------
3168
+ Draw samples from the distribution:
3169
+
3170
+ >>> loc, scale = 10, 1
3171
+ >>> s = np.random.logistic(loc, scale, 10000)
3172
+ >>> count, bins, ignored = plt.hist(s, bins=50)
3173
+
3174
+ # plot against distribution
3175
+
3176
+ >>> def logist(x, loc, scale):
3177
+ ... return exp((loc-x)/scale)/(scale*(1+exp((loc-x)/scale))**2)
3178
+ >>> plt.plot(bins, logist(bins, loc, scale)*count.max()/\\
3179
+ ... logist(bins, loc, scale).max())
3180
+ >>> plt.show()
3181
+
3182
+ """
3183
+ cdef ndarray oloc, oscale
3184
+ cdef double floc, fscale
3185
+
3186
+ floc = PyFloat_AsDouble(loc)
3187
+ fscale = PyFloat_AsDouble(scale)
3188
+ if not PyErr_Occurred():
3189
+ if fscale <= 0:
3190
+ raise ValueError("scale <= 0")
3191
+ return cont2_array_sc(self.internal_state, rk_logistic, size, floc,
3192
+ fscale, self.lock)
3193
+
3194
+ PyErr_Clear()
3195
+ oloc = PyArray_FROM_OTF(loc, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3196
+ oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3197
+ if np.any(np.less_equal(oscale, 0.0)):
3198
+ raise ValueError("scale <= 0")
3199
+ return cont2_array(self.internal_state, rk_logistic, size, oloc,
3200
+ oscale, self.lock)
3201
+
3202
+ def lognormal(self, mean=0.0, sigma=1.0, size=None):
3203
+ """
3204
+ lognormal(mean=0.0, sigma=1.0, size=None)
3205
+
3206
+ Draw samples from a log-normal distribution.
3207
+
3208
+ Draw samples from a log-normal distribution with specified mean,
3209
+ standard deviation, and array shape. Note that the mean and standard
3210
+ deviation are not the values for the distribution itself, but of the
3211
+ underlying normal distribution it is derived from.
3212
+
3213
+ Parameters
3214
+ ----------
3215
+ mean : float
3216
+ Mean value of the underlying normal distribution
3217
+ sigma : float, > 0.
3218
+ Standard deviation of the underlying normal distribution
3219
+ size : int or tuple of ints, optional
3220
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3221
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3222
+ single value is returned.
3223
+
3224
+ Returns
3225
+ -------
3226
+ samples : ndarray or float
3227
+ The desired samples. An array of the same shape as `size` if given,
3228
+ if `size` is None a float is returned.
3229
+
3230
+ See Also
3231
+ --------
3232
+ scipy.stats.lognorm : probability density function, distribution,
3233
+ cumulative density function, etc.
3234
+
3235
+ Notes
3236
+ -----
3237
+ A variable `x` has a log-normal distribution if `log(x)` is normally
3238
+ distributed. The probability density function for the log-normal
3239
+ distribution is:
3240
+
3241
+ .. math:: p(x) = \\frac{1}{\\sigma x \\sqrt{2\\pi}}
3242
+ e^{(-\\frac{(ln(x)-\\mu)^2}{2\\sigma^2})}
3243
+
3244
+ where :math:`\\mu` is the mean and :math:`\\sigma` is the standard
3245
+ deviation of the normally distributed logarithm of the variable.
3246
+ A log-normal distribution results if a random variable is the *product*
3247
+ of a large number of independent, identically-distributed variables in
3248
+ the same way that a normal distribution results if the variable is the
3249
+ *sum* of a large number of independent, identically-distributed
3250
+ variables.
3251
+
3252
+ References
3253
+ ----------
3254
+ .. [1] Limpert, E., Stahel, W. A., and Abbt, M., "Log-normal
3255
+ Distributions across the Sciences: Keys and Clues,"
3256
+ BioScience, Vol. 51, No. 5, May, 2001.
3257
+ http://stat.ethz.ch/~stahel/lognormal/bioscience.pdf
3258
+ .. [2] Reiss, R.D. and Thomas, M., "Statistical Analysis of Extreme
3259
+ Values," Basel: Birkhauser Verlag, 2001, pp. 31-32.
3260
+
3261
+ Examples
3262
+ --------
3263
+ Draw samples from the distribution:
3264
+
3265
+ >>> mu, sigma = 3., 1. # mean and standard deviation
3266
+ >>> s = np.random.lognormal(mu, sigma, 1000)
3267
+
3268
+ Display the histogram of the samples, along with
3269
+ the probability density function:
3270
+
3271
+ >>> import matplotlib.pyplot as plt
3272
+ >>> count, bins, ignored = plt.hist(s, 100, normed=True, align='mid')
3273
+
3274
+ >>> x = np.linspace(min(bins), max(bins), 10000)
3275
+ >>> pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))
3276
+ ... / (x * sigma * np.sqrt(2 * np.pi)))
3277
+
3278
+ >>> plt.plot(x, pdf, linewidth=2, color='r')
3279
+ >>> plt.axis('tight')
3280
+ >>> plt.show()
3281
+
3282
+ Demonstrate that taking the products of random samples from a uniform
3283
+ distribution can be fit well by a log-normal probability density
3284
+ function.
3285
+
3286
+ >>> # Generate a thousand samples: each is the product of 100 random
3287
+ >>> # values, drawn from a normal distribution.
3288
+ >>> b = []
3289
+ >>> for i in range(1000):
3290
+ ... a = 10. + np.random.random(100)
3291
+ ... b.append(np.product(a))
3292
+
3293
+ >>> b = np.array(b) / np.min(b) # scale values to be positive
3294
+ >>> count, bins, ignored = plt.hist(b, 100, normed=True, align='mid')
3295
+ >>> sigma = np.std(np.log(b))
3296
+ >>> mu = np.mean(np.log(b))
3297
+
3298
+ >>> x = np.linspace(min(bins), max(bins), 10000)
3299
+ >>> pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))
3300
+ ... / (x * sigma * np.sqrt(2 * np.pi)))
3301
+
3302
+ >>> plt.plot(x, pdf, color='r', linewidth=2)
3303
+ >>> plt.show()
3304
+
3305
+ """
3306
+ cdef ndarray omean, osigma
3307
+ cdef double fmean, fsigma
3308
+
3309
+ fmean = PyFloat_AsDouble(mean)
3310
+ fsigma = PyFloat_AsDouble(sigma)
3311
+
3312
+ if not PyErr_Occurred():
3313
+ if fsigma <= 0:
3314
+ raise ValueError("sigma <= 0")
3315
+ return cont2_array_sc(self.internal_state, rk_lognormal, size,
3316
+ fmean, fsigma, self.lock)
3317
+
3318
+ PyErr_Clear()
3319
+
3320
+ omean = PyArray_FROM_OTF(mean, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3321
+ osigma = PyArray_FROM_OTF(sigma, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3322
+ if np.any(np.less_equal(osigma, 0.0)):
3323
+ raise ValueError("sigma <= 0.0")
3324
+ return cont2_array(self.internal_state, rk_lognormal, size, omean,
3325
+ osigma, self.lock)
3326
+
3327
+ def rayleigh(self, scale=1.0, size=None):
3328
+ """
3329
+ rayleigh(scale=1.0, size=None)
3330
+
3331
+ Draw samples from a Rayleigh distribution.
3332
+
3333
+ The :math:`\\chi` and Weibull distributions are generalizations of the
3334
+ Rayleigh.
3335
+
3336
+ Parameters
3337
+ ----------
3338
+ scale : scalar
3339
+ Scale, also equals the mode. Should be >= 0.
3340
+ size : int or tuple of ints, optional
3341
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3342
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3343
+ single value is returned.
3344
+
3345
+ Notes
3346
+ -----
3347
+ The probability density function for the Rayleigh distribution is
3348
+
3349
+ .. math:: P(x;scale) = \\frac{x}{scale^2}e^{\\frac{-x^2}{2 \\cdotp scale^2}}
3350
+
3351
+ The Rayleigh distribution would arise, for example, if the East
3352
+ and North components of the wind velocity had identical zero-mean
3353
+ Gaussian distributions. Then the wind speed would have a Rayleigh
3354
+ distribution.
3355
+
3356
+ References
3357
+ ----------
3358
+ .. [1] Brighton Webs Ltd., "Rayleigh Distribution,"
3359
+ http://www.brighton-webs.co.uk/distributions/rayleigh.asp
3360
+ .. [2] Wikipedia, "Rayleigh distribution"
3361
+ http://en.wikipedia.org/wiki/Rayleigh_distribution
3362
+
3363
+ Examples
3364
+ --------
3365
+ Draw values from the distribution and plot the histogram
3366
+
3367
+ >>> values = hist(np.random.rayleigh(3, 100000), bins=200, normed=True)
3368
+
3369
+ Wave heights tend to follow a Rayleigh distribution. If the mean wave
3370
+ height is 1 meter, what fraction of waves are likely to be larger than 3
3371
+ meters?
3372
+
3373
+ >>> meanvalue = 1
3374
+ >>> modevalue = np.sqrt(2 / np.pi) * meanvalue
3375
+ >>> s = np.random.rayleigh(modevalue, 1000000)
3376
+
3377
+ The percentage of waves larger than 3 meters is:
3378
+
3379
+ >>> 100.*sum(s>3)/1000000.
3380
+ 0.087300000000000003
3381
+
3382
+ """
3383
+ cdef ndarray oscale
3384
+ cdef double fscale
3385
+
3386
+ fscale = PyFloat_AsDouble(scale)
3387
+
3388
+ if not PyErr_Occurred():
3389
+ if fscale <= 0:
3390
+ raise ValueError("scale <= 0")
3391
+ return cont1_array_sc(self.internal_state, rk_rayleigh, size,
3392
+ fscale, self.lock)
3393
+
3394
+ PyErr_Clear()
3395
+
3396
+ oscale = <ndarray>PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3397
+ if np.any(np.less_equal(oscale, 0.0)):
3398
+ raise ValueError("scale <= 0.0")
3399
+ return cont1_array(self.internal_state, rk_rayleigh, size, oscale,
3400
+ self.lock)
3401
+
3402
+ def wald(self, mean, scale, size=None):
3403
+ """
3404
+ wald(mean, scale, size=None)
3405
+
3406
+ Draw samples from a Wald, or inverse Gaussian, distribution.
3407
+
3408
+ As the scale approaches infinity, the distribution becomes more like a
3409
+ Gaussian. Some references claim that the Wald is an inverse Gaussian
3410
+ with mean equal to 1, but this is by no means universal.
3411
+
3412
+ The inverse Gaussian distribution was first studied in relationship to
3413
+ Brownian motion. In 1956 M.C.K. Tweedie used the name inverse Gaussian
3414
+ because there is an inverse relationship between the time to cover a
3415
+ unit distance and distance covered in unit time.
3416
+
3417
+ Parameters
3418
+ ----------
3419
+ mean : scalar
3420
+ Distribution mean, should be > 0.
3421
+ scale : scalar
3422
+ Scale parameter, should be >= 0.
3423
+ size : int or tuple of ints, optional
3424
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3425
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3426
+ single value is returned.
3427
+
3428
+ Returns
3429
+ -------
3430
+ samples : ndarray or scalar
3431
+ Drawn sample, all greater than zero.
3432
+
3433
+ Notes
3434
+ -----
3435
+ The probability density function for the Wald distribution is
3436
+
3437
+ .. math:: P(x;mean,scale) = \\sqrt{\\frac{scale}{2\\pi x^3}}e^
3438
+ \\frac{-scale(x-mean)^2}{2\\cdotp mean^2x}
3439
+
3440
+ As noted above the inverse Gaussian distribution first arise
3441
+ from attempts to model Brownian motion. It is also a
3442
+ competitor to the Weibull for use in reliability modeling and
3443
+ modeling stock returns and interest rate processes.
3444
+
3445
+ References
3446
+ ----------
3447
+ .. [1] Brighton Webs Ltd., Wald Distribution,
3448
+ http://www.brighton-webs.co.uk/distributions/wald.asp
3449
+ .. [2] Chhikara, Raj S., and Folks, J. Leroy, "The Inverse Gaussian
3450
+ Distribution: Theory : Methodology, and Applications", CRC Press,
3451
+ 1988.
3452
+ .. [3] Wikipedia, "Wald distribution"
3453
+ http://en.wikipedia.org/wiki/Wald_distribution
3454
+
3455
+ Examples
3456
+ --------
3457
+ Draw values from the distribution and plot the histogram:
3458
+
3459
+ >>> import matplotlib.pyplot as plt
3460
+ >>> h = plt.hist(np.random.wald(3, 2, 100000), bins=200, normed=True)
3461
+ >>> plt.show()
3462
+
3463
+ """
3464
+ cdef ndarray omean, oscale
3465
+ cdef double fmean, fscale
3466
+
3467
+ fmean = PyFloat_AsDouble(mean)
3468
+ fscale = PyFloat_AsDouble(scale)
3469
+ if not PyErr_Occurred():
3470
+ if fmean <= 0:
3471
+ raise ValueError("mean <= 0")
3472
+ if fscale <= 0:
3473
+ raise ValueError("scale <= 0")
3474
+ return cont2_array_sc(self.internal_state, rk_wald, size, fmean,
3475
+ fscale, self.lock)
3476
+
3477
+ PyErr_Clear()
3478
+ omean = PyArray_FROM_OTF(mean, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3479
+ oscale = PyArray_FROM_OTF(scale, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3480
+ if np.any(np.less_equal(omean,0.0)):
3481
+ raise ValueError("mean <= 0.0")
3482
+ elif np.any(np.less_equal(oscale,0.0)):
3483
+ raise ValueError("scale <= 0.0")
3484
+ return cont2_array(self.internal_state, rk_wald, size, omean, oscale,
3485
+ self.lock)
3486
+
3487
+ def triangular(self, left, mode, right, size=None):
3488
+ """
3489
+ triangular(left, mode, right, size=None)
3490
+
3491
+ Draw samples from the triangular distribution.
3492
+
3493
+ The triangular distribution is a continuous probability
3494
+ distribution with lower limit left, peak at mode, and upper
3495
+ limit right. Unlike the other distributions, these parameters
3496
+ directly define the shape of the pdf.
3497
+
3498
+ Parameters
3499
+ ----------
3500
+ left : scalar
3501
+ Lower limit.
3502
+ mode : scalar
3503
+ The value where the peak of the distribution occurs.
3504
+ The value should fulfill the condition ``left <= mode <= right``.
3505
+ right : scalar
3506
+ Upper limit, should be larger than `left`.
3507
+ size : int or tuple of ints, optional
3508
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3509
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3510
+ single value is returned.
3511
+
3512
+ Returns
3513
+ -------
3514
+ samples : ndarray or scalar
3515
+ The returned samples all lie in the interval [left, right].
3516
+
3517
+ Notes
3518
+ -----
3519
+ The probability density function for the triangular distribution is
3520
+
3521
+ .. math:: P(x;l, m, r) = \\begin{cases}
3522
+ \\frac{2(x-l)}{(r-l)(m-l)}& \\text{for $l \\leq x \\leq m$},\\\\
3523
+ \\frac{2(m-x)}{(r-l)(r-m)}& \\text{for $m \\leq x \\leq r$},\\\\
3524
+ 0& \\text{otherwise}.
3525
+ \\end{cases}
3526
+
3527
+ The triangular distribution is often used in ill-defined
3528
+ problems where the underlying distribution is not known, but
3529
+ some knowledge of the limits and mode exists. Often it is used
3530
+ in simulations.
3531
+
3532
+ References
3533
+ ----------
3534
+ .. [1] Wikipedia, "Triangular distribution"
3535
+ http://en.wikipedia.org/wiki/Triangular_distribution
3536
+
3537
+ Examples
3538
+ --------
3539
+ Draw values from the distribution and plot the histogram:
3540
+
3541
+ >>> import matplotlib.pyplot as plt
3542
+ >>> h = plt.hist(np.random.triangular(-3, 0, 8, 100000), bins=200,
3543
+ ... normed=True)
3544
+ >>> plt.show()
3545
+
3546
+ """
3547
+ cdef ndarray oleft, omode, oright
3548
+ cdef double fleft, fmode, fright
3549
+
3550
+ fleft = PyFloat_AsDouble(left)
3551
+ fright = PyFloat_AsDouble(right)
3552
+ fmode = PyFloat_AsDouble(mode)
3553
+ if not PyErr_Occurred():
3554
+ if fleft > fmode:
3555
+ raise ValueError("left > mode")
3556
+ if fmode > fright:
3557
+ raise ValueError("mode > right")
3558
+ if fleft == fright:
3559
+ raise ValueError("left == right")
3560
+ return cont3_array_sc(self.internal_state, rk_triangular, size,
3561
+ fleft, fmode, fright, self.lock)
3562
+
3563
+ PyErr_Clear()
3564
+ oleft = <ndarray>PyArray_FROM_OTF(left, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3565
+ omode = <ndarray>PyArray_FROM_OTF(mode, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3566
+ oright = <ndarray>PyArray_FROM_OTF(right, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3567
+
3568
+ if np.any(np.greater(oleft, omode)):
3569
+ raise ValueError("left > mode")
3570
+ if np.any(np.greater(omode, oright)):
3571
+ raise ValueError("mode > right")
3572
+ if np.any(np.equal(oleft, oright)):
3573
+ raise ValueError("left == right")
3574
+ return cont3_array(self.internal_state, rk_triangular, size, oleft,
3575
+ omode, oright, self.lock)
3576
+
3577
+ # Complicated, discrete distributions:
3578
+ def binomial(self, n, p, size=None):
3579
+ """
3580
+ binomial(n, p, size=None)
3581
+
3582
+ Draw samples from a binomial distribution.
3583
+
3584
+ Samples are drawn from a binomial distribution with specified
3585
+ parameters, n trials and p probability of success where
3586
+ n an integer >= 0 and p is in the interval [0,1]. (n may be
3587
+ input as a float, but it is truncated to an integer in use)
3588
+
3589
+ Parameters
3590
+ ----------
3591
+ n : float (but truncated to an integer)
3592
+ parameter, >= 0.
3593
+ p : float
3594
+ parameter, >= 0 and <=1.
3595
+ size : int or tuple of ints, optional
3596
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3597
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3598
+ single value is returned.
3599
+
3600
+ Returns
3601
+ -------
3602
+ samples : ndarray or scalar
3603
+ where the values are all integers in [0, n].
3604
+
3605
+ See Also
3606
+ --------
3607
+ scipy.stats.distributions.binom : probability density function,
3608
+ distribution or cumulative density function, etc.
3609
+
3610
+ Notes
3611
+ -----
3612
+ The probability density for the binomial distribution is
3613
+
3614
+ .. math:: P(N) = \\binom{n}{N}p^N(1-p)^{n-N},
3615
+
3616
+ where :math:`n` is the number of trials, :math:`p` is the probability
3617
+ of success, and :math:`N` is the number of successes.
3618
+
3619
+ When estimating the standard error of a proportion in a population by
3620
+ using a random sample, the normal distribution works well unless the
3621
+ product p*n <=5, where p = population proportion estimate, and n =
3622
+ number of samples, in which case the binomial distribution is used
3623
+ instead. For example, a sample of 15 people shows 4 who are left
3624
+ handed, and 11 who are right handed. Then p = 4/15 = 27%. 0.27*15 = 4,
3625
+ so the binomial distribution should be used in this case.
3626
+
3627
+ References
3628
+ ----------
3629
+ .. [1] Dalgaard, Peter, "Introductory Statistics with R",
3630
+ Springer-Verlag, 2002.
3631
+ .. [2] Glantz, Stanton A. "Primer of Biostatistics.", McGraw-Hill,
3632
+ Fifth Edition, 2002.
3633
+ .. [3] Lentner, Marvin, "Elementary Applied Statistics", Bogden
3634
+ and Quigley, 1972.
3635
+ .. [4] Weisstein, Eric W. "Binomial Distribution." From MathWorld--A
3636
+ Wolfram Web Resource.
3637
+ http://mathworld.wolfram.com/BinomialDistribution.html
3638
+ .. [5] Wikipedia, "Binomial-distribution",
3639
+ http://en.wikipedia.org/wiki/Binomial_distribution
3640
+
3641
+ Examples
3642
+ --------
3643
+ Draw samples from the distribution:
3644
+
3645
+ >>> n, p = 10, .5 # number of trials, probability of each trial
3646
+ >>> s = np.random.binomial(n, p, 1000)
3647
+ # result of flipping a coin 10 times, tested 1000 times.
3648
+
3649
+ A real world example. A company drills 9 wild-cat oil exploration
3650
+ wells, each with an estimated probability of success of 0.1. All nine
3651
+ wells fail. What is the probability of that happening?
3652
+
3653
+ Let's do 20,000 trials of the model, and count the number that
3654
+ generate zero positive results.
3655
+
3656
+ >>> sum(np.random.binomial(9, 0.1, 20000) == 0)/20000.
3657
+ # answer = 0.38885, or 38%.
3658
+
3659
+ """
3660
+ cdef ndarray on, op
3661
+ cdef long ln
3662
+ cdef double fp
3663
+
3664
+ fp = PyFloat_AsDouble(p)
3665
+ ln = PyInt_AsLong(n)
3666
+ if not PyErr_Occurred():
3667
+ if ln < 0:
3668
+ raise ValueError("n < 0")
3669
+ if fp < 0:
3670
+ raise ValueError("p < 0")
3671
+ elif fp > 1:
3672
+ raise ValueError("p > 1")
3673
+ elif np.isnan(fp):
3674
+ raise ValueError("p is nan")
3675
+ return discnp_array_sc(self.internal_state, rk_binomial, size, ln,
3676
+ fp, self.lock)
3677
+
3678
+ PyErr_Clear()
3679
+
3680
+ on = <ndarray>PyArray_FROM_OTF(n, NPY_LONG, NPY_ARRAY_ALIGNED)
3681
+ op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3682
+ if np.any(np.less(n, 0)):
3683
+ raise ValueError("n < 0")
3684
+ if np.any(np.less(p, 0)):
3685
+ raise ValueError("p < 0")
3686
+ if np.any(np.greater(p, 1)):
3687
+ raise ValueError("p > 1")
3688
+ return discnp_array(self.internal_state, rk_binomial, size, on, op,
3689
+ self.lock)
3690
+
3691
+ def negative_binomial(self, n, p, size=None):
3692
+ """
3693
+ negative_binomial(n, p, size=None)
3694
+
3695
+ Draw samples from a negative binomial distribution.
3696
+
3697
+ Samples are drawn from a negative binomial distribution with specified
3698
+ parameters, `n` trials and `p` probability of success where `n` is an
3699
+ integer > 0 and `p` is in the interval [0, 1].
3700
+
3701
+ Parameters
3702
+ ----------
3703
+ n : int
3704
+ Parameter, > 0.
3705
+ p : float
3706
+ Parameter, >= 0 and <=1.
3707
+ size : int or tuple of ints, optional
3708
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3709
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3710
+ single value is returned.
3711
+
3712
+ Returns
3713
+ -------
3714
+ samples : int or ndarray of ints
3715
+ Drawn samples.
3716
+
3717
+ Notes
3718
+ -----
3719
+ The probability density for the negative binomial distribution is
3720
+
3721
+ .. math:: P(N;n,p) = \\binom{N+n-1}{n-1}p^{n}(1-p)^{N},
3722
+
3723
+ where :math:`n-1` is the number of successes, :math:`p` is the
3724
+ probability of success, and :math:`N+n-1` is the number of trials.
3725
+ The negative binomial distribution gives the probability of n-1
3726
+ successes and N failures in N+n-1 trials, and success on the (N+n)th
3727
+ trial.
3728
+
3729
+ If one throws a die repeatedly until the third time a "1" appears,
3730
+ then the probability distribution of the number of non-"1"s that
3731
+ appear before the third "1" is a negative binomial distribution.
3732
+
3733
+ References
3734
+ ----------
3735
+ .. [1] Weisstein, Eric W. "Negative Binomial Distribution." From
3736
+ MathWorld--A Wolfram Web Resource.
3737
+ http://mathworld.wolfram.com/NegativeBinomialDistribution.html
3738
+ .. [2] Wikipedia, "Negative binomial distribution",
3739
+ http://en.wikipedia.org/wiki/Negative_binomial_distribution
3740
+
3741
+ Examples
3742
+ --------
3743
+ Draw samples from the distribution:
3744
+
3745
+ A real world example. A company drills wild-cat oil
3746
+ exploration wells, each with an estimated probability of
3747
+ success of 0.1. What is the probability of having one success
3748
+ for each successive well, that is what is the probability of a
3749
+ single success after drilling 5 wells, after 6 wells, etc.?
3750
+
3751
+ >>> s = np.random.negative_binomial(1, 0.1, 100000)
3752
+ >>> for i in range(1, 11):
3753
+ ... probability = sum(s<i) / 100000.
3754
+ ... print i, "wells drilled, probability of one success =", probability
3755
+
3756
+ """
3757
+ cdef ndarray on
3758
+ cdef ndarray op
3759
+ cdef double fn
3760
+ cdef double fp
3761
+
3762
+ fp = PyFloat_AsDouble(p)
3763
+ fn = PyFloat_AsDouble(n)
3764
+ if not PyErr_Occurred():
3765
+ if fn <= 0:
3766
+ raise ValueError("n <= 0")
3767
+ if fp < 0:
3768
+ raise ValueError("p < 0")
3769
+ elif fp > 1:
3770
+ raise ValueError("p > 1")
3771
+ return discdd_array_sc(self.internal_state, rk_negative_binomial,
3772
+ size, fn, fp, self.lock)
3773
+
3774
+ PyErr_Clear()
3775
+
3776
+ on = <ndarray>PyArray_FROM_OTF(n, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3777
+ op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3778
+ if np.any(np.less_equal(n, 0)):
3779
+ raise ValueError("n <= 0")
3780
+ if np.any(np.less(p, 0)):
3781
+ raise ValueError("p < 0")
3782
+ if np.any(np.greater(p, 1)):
3783
+ raise ValueError("p > 1")
3784
+ return discdd_array(self.internal_state, rk_negative_binomial, size,
3785
+ on, op, self.lock)
3786
+
3787
+ def poisson(self, lam=1.0, size=None):
3788
+ """
3789
+ poisson(lam=1.0, size=None)
3790
+
3791
+ Draw samples from a Poisson distribution.
3792
+
3793
+ The Poisson distribution is the limit of the binomial distribution
3794
+ for large N.
3795
+
3796
+ Parameters
3797
+ ----------
3798
+ lam : float or sequence of float
3799
+ Expectation of interval, should be >= 0. A sequence of expectation
3800
+ intervals must be broadcastable over the requested size.
3801
+ size : int or tuple of ints, optional
3802
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3803
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3804
+ single value is returned.
3805
+
3806
+ Returns
3807
+ -------
3808
+ samples : ndarray or scalar
3809
+ The drawn samples, of shape *size*, if it was provided.
3810
+
3811
+ Notes
3812
+ -----
3813
+ The Poisson distribution
3814
+
3815
+ .. math:: f(k; \\lambda)=\\frac{\\lambda^k e^{-\\lambda}}{k!}
3816
+
3817
+ For events with an expected separation :math:`\\lambda` the Poisson
3818
+ distribution :math:`f(k; \\lambda)` describes the probability of
3819
+ :math:`k` events occurring within the observed
3820
+ interval :math:`\\lambda`.
3821
+
3822
+ Because the output is limited to the range of the C long type, a
3823
+ ValueError is raised when `lam` is within 10 sigma of the maximum
3824
+ representable value.
3825
+
3826
+ References
3827
+ ----------
3828
+ .. [1] Weisstein, Eric W. "Poisson Distribution."
3829
+ From MathWorld--A Wolfram Web Resource.
3830
+ http://mathworld.wolfram.com/PoissonDistribution.html
3831
+ .. [2] Wikipedia, "Poisson distribution",
3832
+ http://en.wikipedia.org/wiki/Poisson_distribution
3833
+
3834
+ Examples
3835
+ --------
3836
+ Draw samples from the distribution:
3837
+
3838
+ >>> import numpy as np
3839
+ >>> s = np.random.poisson(5, 10000)
3840
+
3841
+ Display histogram of the sample:
3842
+
3843
+ >>> import matplotlib.pyplot as plt
3844
+ >>> count, bins, ignored = plt.hist(s, 14, normed=True)
3845
+ >>> plt.show()
3846
+
3847
+ Draw each 100 values for lambda 100 and 500:
3848
+
3849
+ >>> s = np.random.poisson(lam=(100., 500.), size=(100, 2))
3850
+
3851
+ """
3852
+ cdef ndarray olam
3853
+ cdef double flam
3854
+ flam = PyFloat_AsDouble(lam)
3855
+ if not PyErr_Occurred():
3856
+ if lam < 0:
3857
+ raise ValueError("lam < 0")
3858
+ if lam > self.poisson_lam_max:
3859
+ raise ValueError("lam value too large")
3860
+ return discd_array_sc(self.internal_state, rk_poisson, size, flam,
3861
+ self.lock)
3862
+
3863
+ PyErr_Clear()
3864
+
3865
+ olam = <ndarray>PyArray_FROM_OTF(lam, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3866
+ if np.any(np.less(olam, 0)):
3867
+ raise ValueError("lam < 0")
3868
+ if np.any(np.greater(olam, self.poisson_lam_max)):
3869
+ raise ValueError("lam value too large.")
3870
+ return discd_array(self.internal_state, rk_poisson, size, olam,
3871
+ self.lock)
3872
+
3873
+ def zipf(self, a, size=None):
3874
+ """
3875
+ zipf(a, size=None)
3876
+
3877
+ Draw samples from a Zipf distribution.
3878
+
3879
+ Samples are drawn from a Zipf distribution with specified parameter
3880
+ `a` > 1.
3881
+
3882
+ The Zipf distribution (also known as the zeta distribution) is a
3883
+ continuous probability distribution that satisfies Zipf's law: the
3884
+ frequency of an item is inversely proportional to its rank in a
3885
+ frequency table.
3886
+
3887
+ Parameters
3888
+ ----------
3889
+ a : float > 1
3890
+ Distribution parameter.
3891
+ size : int or tuple of ints, optional
3892
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3893
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3894
+ single value is returned.
3895
+
3896
+ Returns
3897
+ -------
3898
+ samples : scalar or ndarray
3899
+ The returned samples are greater than or equal to one.
3900
+
3901
+ See Also
3902
+ --------
3903
+ scipy.stats.distributions.zipf : probability density function,
3904
+ distribution, or cumulative density function, etc.
3905
+
3906
+ Notes
3907
+ -----
3908
+ The probability density for the Zipf distribution is
3909
+
3910
+ .. math:: p(x) = \\frac{x^{-a}}{\\zeta(a)},
3911
+
3912
+ where :math:`\\zeta` is the Riemann Zeta function.
3913
+
3914
+ It is named for the American linguist George Kingsley Zipf, who noted
3915
+ that the frequency of any word in a sample of a language is inversely
3916
+ proportional to its rank in the frequency table.
3917
+
3918
+ References
3919
+ ----------
3920
+ .. [1] Zipf, G. K., "Selected Studies of the Principle of Relative
3921
+ Frequency in Language," Cambridge, MA: Harvard Univ. Press,
3922
+ 1932.
3923
+
3924
+ Examples
3925
+ --------
3926
+ Draw samples from the distribution:
3927
+
3928
+ >>> a = 2. # parameter
3929
+ >>> s = np.random.zipf(a, 1000)
3930
+
3931
+ Display the histogram of the samples, along with
3932
+ the probability density function:
3933
+
3934
+ >>> import matplotlib.pyplot as plt
3935
+ >>> import scipy.special as sps
3936
+ Truncate s values at 50 so plot is interesting
3937
+ >>> count, bins, ignored = plt.hist(s[s<50], 50, normed=True)
3938
+ >>> x = np.arange(1., 50.)
3939
+ >>> y = x**(-a)/sps.zetac(a)
3940
+ >>> plt.plot(x, y/max(y), linewidth=2, color='r')
3941
+ >>> plt.show()
3942
+
3943
+ """
3944
+ cdef ndarray oa
3945
+ cdef double fa
3946
+
3947
+ fa = PyFloat_AsDouble(a)
3948
+ if not PyErr_Occurred():
3949
+ if fa <= 1.0:
3950
+ raise ValueError("a <= 1.0")
3951
+ return discd_array_sc(self.internal_state, rk_zipf, size, fa,
3952
+ self.lock)
3953
+
3954
+ PyErr_Clear()
3955
+
3956
+ oa = <ndarray>PyArray_FROM_OTF(a, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
3957
+ if np.any(np.less_equal(oa, 1.0)):
3958
+ raise ValueError("a <= 1.0")
3959
+ return discd_array(self.internal_state, rk_zipf, size, oa, self.lock)
3960
+
3961
+ def geometric(self, p, size=None):
3962
+ """
3963
+ geometric(p, size=None)
3964
+
3965
+ Draw samples from the geometric distribution.
3966
+
3967
+ Bernoulli trials are experiments with one of two outcomes:
3968
+ success or failure (an example of such an experiment is flipping
3969
+ a coin). The geometric distribution models the number of trials
3970
+ that must be run in order to achieve success. It is therefore
3971
+ supported on the positive integers, ``k = 1, 2, ...``.
3972
+
3973
+ The probability mass function of the geometric distribution is
3974
+
3975
+ .. math:: f(k) = (1 - p)^{k - 1} p
3976
+
3977
+ where `p` is the probability of success of an individual trial.
3978
+
3979
+ Parameters
3980
+ ----------
3981
+ p : float
3982
+ The probability of success of an individual trial.
3983
+ size : int or tuple of ints, optional
3984
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
3985
+ ``m * n * k`` samples are drawn. Default is None, in which case a
3986
+ single value is returned.
3987
+
3988
+ Returns
3989
+ -------
3990
+ out : ndarray
3991
+ Samples from the geometric distribution, shaped according to
3992
+ `size`.
3993
+
3994
+ Examples
3995
+ --------
3996
+ Draw ten thousand values from the geometric distribution,
3997
+ with the probability of an individual success equal to 0.35:
3998
+
3999
+ >>> z = np.random.geometric(p=0.35, size=10000)
4000
+
4001
+ How many trials succeeded after a single run?
4002
+
4003
+ >>> (z == 1).sum() / 10000.
4004
+ 0.34889999999999999 #random
4005
+
4006
+ """
4007
+ cdef ndarray op
4008
+ cdef double fp
4009
+
4010
+ fp = PyFloat_AsDouble(p)
4011
+ if not PyErr_Occurred():
4012
+ if fp < 0.0:
4013
+ raise ValueError("p < 0.0")
4014
+ if fp > 1.0:
4015
+ raise ValueError("p > 1.0")
4016
+ return discd_array_sc(self.internal_state, rk_geometric, size, fp,
4017
+ self.lock)
4018
+
4019
+ PyErr_Clear()
4020
+
4021
+
4022
+ op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
4023
+ if np.any(np.less(op, 0.0)):
4024
+ raise ValueError("p < 0.0")
4025
+ if np.any(np.greater(op, 1.0)):
4026
+ raise ValueError("p > 1.0")
4027
+ return discd_array(self.internal_state, rk_geometric, size, op,
4028
+ self.lock)
4029
+
4030
+ def hypergeometric(self, ngood, nbad, nsample, size=None):
4031
+ """
4032
+ hypergeometric(ngood, nbad, nsample, size=None)
4033
+
4034
+ Draw samples from a Hypergeometric distribution.
4035
+
4036
+ Samples are drawn from a hypergeometric distribution with specified
4037
+ parameters, ngood (ways to make a good selection), nbad (ways to make
4038
+ a bad selection), and nsample = number of items sampled, which is less
4039
+ than or equal to the sum ngood + nbad.
4040
+
4041
+ Parameters
4042
+ ----------
4043
+ ngood : int or array_like
4044
+ Number of ways to make a good selection. Must be nonnegative.
4045
+ nbad : int or array_like
4046
+ Number of ways to make a bad selection. Must be nonnegative.
4047
+ nsample : int or array_like
4048
+ Number of items sampled. Must be at least 1 and at most
4049
+ ``ngood + nbad``.
4050
+ size : int or tuple of ints, optional
4051
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
4052
+ ``m * n * k`` samples are drawn. Default is None, in which case a
4053
+ single value is returned.
4054
+
4055
+ Returns
4056
+ -------
4057
+ samples : ndarray or scalar
4058
+ The values are all integers in [0, n].
4059
+
4060
+ See Also
4061
+ --------
4062
+ scipy.stats.distributions.hypergeom : probability density function,
4063
+ distribution or cumulative density function, etc.
4064
+
4065
+ Notes
4066
+ -----
4067
+ The probability density for the Hypergeometric distribution is
4068
+
4069
+ .. math:: P(x) = \\frac{\\binom{m}{n}\\binom{N-m}{n-x}}{\\binom{N}{n}},
4070
+
4071
+ where :math:`0 \\le x \\le m` and :math:`n+m-N \\le x \\le n`
4072
+
4073
+ for P(x) the probability of x successes, n = ngood, m = nbad, and
4074
+ N = number of samples.
4075
+
4076
+ Consider an urn with black and white marbles in it, ngood of them
4077
+ black and nbad are white. If you draw nsample balls without
4078
+ replacement, then the hypergeometric distribution describes the
4079
+ distribution of black balls in the drawn sample.
4080
+
4081
+ Note that this distribution is very similar to the binomial
4082
+ distribution, except that in this case, samples are drawn without
4083
+ replacement, whereas in the Binomial case samples are drawn with
4084
+ replacement (or the sample space is infinite). As the sample space
4085
+ becomes large, this distribution approaches the binomial.
4086
+
4087
+ References
4088
+ ----------
4089
+ .. [1] Lentner, Marvin, "Elementary Applied Statistics", Bogden
4090
+ and Quigley, 1972.
4091
+ .. [2] Weisstein, Eric W. "Hypergeometric Distribution." From
4092
+ MathWorld--A Wolfram Web Resource.
4093
+ http://mathworld.wolfram.com/HypergeometricDistribution.html
4094
+ .. [3] Wikipedia, "Hypergeometric-distribution",
4095
+ http://en.wikipedia.org/wiki/Hypergeometric_distribution
4096
+
4097
+ Examples
4098
+ --------
4099
+ Draw samples from the distribution:
4100
+
4101
+ >>> ngood, nbad, nsamp = 100, 2, 10
4102
+ # number of good, number of bad, and number of samples
4103
+ >>> s = np.random.hypergeometric(ngood, nbad, nsamp, 1000)
4104
+ >>> hist(s)
4105
+ # note that it is very unlikely to grab both bad items
4106
+
4107
+ Suppose you have an urn with 15 white and 15 black marbles.
4108
+ If you pull 15 marbles at random, how likely is it that
4109
+ 12 or more of them are one color?
4110
+
4111
+ >>> s = np.random.hypergeometric(15, 15, 15, 100000)
4112
+ >>> sum(s>=12)/100000. + sum(s<=3)/100000.
4113
+ # answer = 0.003 ... pretty unlikely!
4114
+
4115
+ """
4116
+ cdef ndarray ongood, onbad, onsample
4117
+ cdef long lngood, lnbad, lnsample
4118
+
4119
+ lngood = PyInt_AsLong(ngood)
4120
+ lnbad = PyInt_AsLong(nbad)
4121
+ lnsample = PyInt_AsLong(nsample)
4122
+ if not PyErr_Occurred():
4123
+ if lngood < 0:
4124
+ raise ValueError("ngood < 0")
4125
+ if lnbad < 0:
4126
+ raise ValueError("nbad < 0")
4127
+ if lnsample < 1:
4128
+ raise ValueError("nsample < 1")
4129
+ if lngood + lnbad < lnsample:
4130
+ raise ValueError("ngood + nbad < nsample")
4131
+ return discnmN_array_sc(self.internal_state, rk_hypergeometric,
4132
+ size, lngood, lnbad, lnsample, self.lock)
4133
+
4134
+ PyErr_Clear()
4135
+
4136
+ ongood = <ndarray>PyArray_FROM_OTF(ngood, NPY_LONG, NPY_ARRAY_ALIGNED)
4137
+ onbad = <ndarray>PyArray_FROM_OTF(nbad, NPY_LONG, NPY_ARRAY_ALIGNED)
4138
+ onsample = <ndarray>PyArray_FROM_OTF(nsample, NPY_LONG,
4139
+ NPY_ARRAY_ALIGNED)
4140
+ if np.any(np.less(ongood, 0)):
4141
+ raise ValueError("ngood < 0")
4142
+ if np.any(np.less(onbad, 0)):
4143
+ raise ValueError("nbad < 0")
4144
+ if np.any(np.less(onsample, 1)):
4145
+ raise ValueError("nsample < 1")
4146
+ if np.any(np.less(np.add(ongood, onbad),onsample)):
4147
+ raise ValueError("ngood + nbad < nsample")
4148
+ return discnmN_array(self.internal_state, rk_hypergeometric, size,
4149
+ ongood, onbad, onsample, self.lock)
4150
+
4151
+ def logseries(self, p, size=None):
4152
+ """
4153
+ logseries(p, size=None)
4154
+
4155
+ Draw samples from a logarithmic series distribution.
4156
+
4157
+ Samples are drawn from a log series distribution with specified
4158
+ shape parameter, 0 < ``p`` < 1.
4159
+
4160
+ Parameters
4161
+ ----------
4162
+ loc : float
4163
+
4164
+ scale : float > 0.
4165
+
4166
+ size : int or tuple of ints, optional
4167
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
4168
+ ``m * n * k`` samples are drawn. Default is None, in which case a
4169
+ single value is returned.
4170
+
4171
+ Returns
4172
+ -------
4173
+ samples : ndarray or scalar
4174
+ where the values are all integers in [0, n].
4175
+
4176
+ See Also
4177
+ --------
4178
+ scipy.stats.distributions.logser : probability density function,
4179
+ distribution or cumulative density function, etc.
4180
+
4181
+ Notes
4182
+ -----
4183
+ The probability density for the Log Series distribution is
4184
+
4185
+ .. math:: P(k) = \\frac{-p^k}{k \\ln(1-p)},
4186
+
4187
+ where p = probability.
4188
+
4189
+ The log series distribution is frequently used to represent species
4190
+ richness and occurrence, first proposed by Fisher, Corbet, and
4191
+ Williams in 1943 [2]. It may also be used to model the numbers of
4192
+ occupants seen in cars [3].
4193
+
4194
+ References
4195
+ ----------
4196
+ .. [1] Buzas, Martin A.; Culver, Stephen J., Understanding regional
4197
+ species diversity through the log series distribution of
4198
+ occurrences: BIODIVERSITY RESEARCH Diversity & Distributions,
4199
+ Volume 5, Number 5, September 1999 , pp. 187-195(9).
4200
+ .. [2] Fisher, R.A,, A.S. Corbet, and C.B. Williams. 1943. The
4201
+ relation between the number of species and the number of
4202
+ individuals in a random sample of an animal population.
4203
+ Journal of Animal Ecology, 12:42-58.
4204
+ .. [3] D. J. Hand, F. Daly, D. Lunn, E. Ostrowski, A Handbook of Small
4205
+ Data Sets, CRC Press, 1994.
4206
+ .. [4] Wikipedia, "Logarithmic-distribution",
4207
+ http://en.wikipedia.org/wiki/Logarithmic-distribution
4208
+
4209
+ Examples
4210
+ --------
4211
+ Draw samples from the distribution:
4212
+
4213
+ >>> a = .6
4214
+ >>> s = np.random.logseries(a, 10000)
4215
+ >>> count, bins, ignored = plt.hist(s)
4216
+
4217
+ # plot against distribution
4218
+
4219
+ >>> def logseries(k, p):
4220
+ ... return -p**k/(k*log(1-p))
4221
+ >>> plt.plot(bins, logseries(bins, a)*count.max()/
4222
+ logseries(bins, a).max(), 'r')
4223
+ >>> plt.show()
4224
+
4225
+ """
4226
+ cdef ndarray op
4227
+ cdef double fp
4228
+
4229
+ fp = PyFloat_AsDouble(p)
4230
+ if not PyErr_Occurred():
4231
+ if fp <= 0.0:
4232
+ raise ValueError("p <= 0.0")
4233
+ if fp >= 1.0:
4234
+ raise ValueError("p >= 1.0")
4235
+ return discd_array_sc(self.internal_state, rk_logseries, size, fp,
4236
+ self.lock)
4237
+
4238
+ PyErr_Clear()
4239
+
4240
+ op = <ndarray>PyArray_FROM_OTF(p, NPY_DOUBLE, NPY_ARRAY_ALIGNED)
4241
+ if np.any(np.less_equal(op, 0.0)):
4242
+ raise ValueError("p <= 0.0")
4243
+ if np.any(np.greater_equal(op, 1.0)):
4244
+ raise ValueError("p >= 1.0")
4245
+ return discd_array(self.internal_state, rk_logseries, size, op,
4246
+ self.lock)
4247
+
4248
+ # Multivariate distributions:
4249
+ def multivariate_normal(self, mean, cov, size=None):
4250
+ """
4251
+ multivariate_normal(mean, cov[, size])
4252
+
4253
+ Draw random samples from a multivariate normal distribution.
4254
+
4255
+ The multivariate normal, multinormal or Gaussian distribution is a
4256
+ generalization of the one-dimensional normal distribution to higher
4257
+ dimensions. Such a distribution is specified by its mean and
4258
+ covariance matrix. These parameters are analogous to the mean
4259
+ (average or "center") and variance (standard deviation, or "width,"
4260
+ squared) of the one-dimensional normal distribution.
4261
+
4262
+ Parameters
4263
+ ----------
4264
+ mean : 1-D array_like, of length N
4265
+ Mean of the N-dimensional distribution.
4266
+ cov : 2-D array_like, of shape (N, N)
4267
+ Covariance matrix of the distribution. It must be symmetric and
4268
+ positive-semidefinite for proper sampling.
4269
+ size : int or tuple of ints, optional
4270
+ Given a shape of, for example, ``(m,n,k)``, ``m*n*k`` samples are
4271
+ generated, and packed in an `m`-by-`n`-by-`k` arrangement. Because
4272
+ each sample is `N`-dimensional, the output shape is ``(m,n,k,N)``.
4273
+ If no shape is specified, a single (`N`-D) sample is returned.
4274
+
4275
+ Returns
4276
+ -------
4277
+ out : ndarray
4278
+ The drawn samples, of shape *size*, if that was provided. If not,
4279
+ the shape is ``(N,)``.
4280
+
4281
+ In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
4282
+ value drawn from the distribution.
4283
+
4284
+ Notes
4285
+ -----
4286
+ The mean is a coordinate in N-dimensional space, which represents the
4287
+ location where samples are most likely to be generated. This is
4288
+ analogous to the peak of the bell curve for the one-dimensional or
4289
+ univariate normal distribution.
4290
+
4291
+ Covariance indicates the level to which two variables vary together.
4292
+ From the multivariate normal distribution, we draw N-dimensional
4293
+ samples, :math:`X = [x_1, x_2, ... x_N]`. The covariance matrix
4294
+ element :math:`C_{ij}` is the covariance of :math:`x_i` and :math:`x_j`.
4295
+ The element :math:`C_{ii}` is the variance of :math:`x_i` (i.e. its
4296
+ "spread").
4297
+
4298
+ Instead of specifying the full covariance matrix, popular
4299
+ approximations include:
4300
+
4301
+ - Spherical covariance (*cov* is a multiple of the identity matrix)
4302
+ - Diagonal covariance (*cov* has non-negative elements, and only on
4303
+ the diagonal)
4304
+
4305
+ This geometrical property can be seen in two dimensions by plotting
4306
+ generated data-points:
4307
+
4308
+ >>> mean = [0, 0]
4309
+ >>> cov = [[1, 0], [0, 100]] # diagonal covariance
4310
+
4311
+ Diagonal covariance means that points are oriented along x or y-axis:
4312
+
4313
+ >>> import matplotlib.pyplot as plt
4314
+ >>> x, y = np.random.multivariate_normal(mean, cov, 5000).T
4315
+ >>> plt.plot(x, y, 'x')
4316
+ >>> plt.axis('equal')
4317
+ >>> plt.show()
4318
+
4319
+ Note that the covariance matrix must be positive semidefinite (a.k.a.
4320
+ nonnegative-definite). Otherwise, the behavior of this method is
4321
+ undefined and backwards compatibility is not guaranteed.
4322
+
4323
+ References
4324
+ ----------
4325
+ .. [1] Papoulis, A., "Probability, Random Variables, and Stochastic
4326
+ Processes," 3rd ed., New York: McGraw-Hill, 1991.
4327
+ .. [2] Duda, R. O., Hart, P. E., and Stork, D. G., "Pattern
4328
+ Classification," 2nd ed., New York: Wiley, 2001.
4329
+
4330
+ Examples
4331
+ --------
4332
+ >>> mean = (1, 2)
4333
+ >>> cov = [[1, 0], [0, 1]]
4334
+ >>> x = np.random.multivariate_normal(mean, cov, (3, 3))
4335
+ >>> x.shape
4336
+ (3, 3, 2)
4337
+
4338
+ The following is probably true, given that 0.6 is roughly twice the
4339
+ standard deviation:
4340
+
4341
+ >>> list((x[0,0,:] - mean) < 0.6)
4342
+ [True, True]
4343
+
4344
+ """
4345
+ from numpy.dual import svd
4346
+
4347
+ # Check preconditions on arguments
4348
+ mean = np.array(mean)
4349
+ cov = np.array(cov)
4350
+ if size is None:
4351
+ shape = []
4352
+ elif isinstance(size, (int, long, np.integer)):
4353
+ shape = [size]
4354
+ else:
4355
+ shape = size
4356
+
4357
+ if len(mean.shape) != 1:
4358
+ raise ValueError("mean must be 1 dimensional")
4359
+ if (len(cov.shape) != 2) or (cov.shape[0] != cov.shape[1]):
4360
+ raise ValueError("cov must be 2 dimensional and square")
4361
+ if mean.shape[0] != cov.shape[0]:
4362
+ raise ValueError("mean and cov must have same length")
4363
+
4364
+ # Compute shape of output and create a matrix of independent
4365
+ # standard normally distributed random numbers. The matrix has rows
4366
+ # with the same length as mean and as many rows are necessary to
4367
+ # form a matrix of shape final_shape.
4368
+ final_shape = list(shape[:])
4369
+ final_shape.append(mean.shape[0])
4370
+ x = self.standard_normal(final_shape).reshape(-1, mean.shape[0])
4371
+
4372
+ # Transform matrix of standard normals into matrix where each row
4373
+ # contains multivariate normals with the desired covariance.
4374
+ # Compute A such that dot(transpose(A),A) == cov.
4375
+ # Then the matrix products of the rows of x and A has the desired
4376
+ # covariance. Note that sqrt(s)*v where (u,s,v) is the singular value
4377
+ # decomposition of cov is such an A.
4378
+ #
4379
+ # Also check that cov is positive-semidefinite. If so, the u.T and v
4380
+ # matrices should be equal up to roundoff error if cov is
4381
+ # symmetrical and the singular value of the corresponding row is
4382
+ # not zero. We continue to use the SVD rather than Cholesky in
4383
+ # order to preserve current outputs. Note that symmetry has not
4384
+ # been checked.
4385
+ (u, s, v) = svd(cov)
4386
+ neg = (np.sum(u.T * v, axis=1) < 0) & (s > 0)
4387
+ if np.any(neg):
4388
+ s[neg] = 0.
4389
+ warnings.warn("covariance is not positive-semidefinite.",
4390
+ RuntimeWarning)
4391
+
4392
+ x = np.dot(x, np.sqrt(s)[:, None] * v)
4393
+ x += mean
4394
+ x.shape = tuple(final_shape)
4395
+ return x
4396
+
4397
+ def multinomial(self, npy_intp n, object pvals, size=None):
4398
+ """
4399
+ multinomial(n, pvals, size=None)
4400
+
4401
+ Draw samples from a multinomial distribution.
4402
+
4403
+ The multinomial distribution is a multivariate generalisation of the
4404
+ binomial distribution. Take an experiment with one of ``p``
4405
+ possible outcomes. An example of such an experiment is throwing a dice,
4406
+ where the outcome can be 1 through 6. Each sample drawn from the
4407
+ distribution represents `n` such experiments. Its values,
4408
+ ``X_i = [X_0, X_1, ..., X_p]``, represent the number of times the
4409
+ outcome was ``i``.
4410
+
4411
+ Parameters
4412
+ ----------
4413
+ n : int
4414
+ Number of experiments.
4415
+ pvals : sequence of floats, length p
4416
+ Probabilities of each of the ``p`` different outcomes. These
4417
+ should sum to 1 (however, the last element is always assumed to
4418
+ account for the remaining probability, as long as
4419
+ ``sum(pvals[:-1]) <= 1)``.
4420
+ size : int or tuple of ints, optional
4421
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
4422
+ ``m * n * k`` samples are drawn. Default is None, in which case a
4423
+ single value is returned.
4424
+
4425
+ Returns
4426
+ -------
4427
+ out : ndarray
4428
+ The drawn samples, of shape *size*, if that was provided. If not,
4429
+ the shape is ``(N,)``.
4430
+
4431
+ In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
4432
+ value drawn from the distribution.
4433
+
4434
+ Examples
4435
+ --------
4436
+ Throw a dice 20 times:
4437
+
4438
+ >>> np.random.multinomial(20, [1/6.]*6, size=1)
4439
+ array([[4, 1, 7, 5, 2, 1]])
4440
+
4441
+ It landed 4 times on 1, once on 2, etc.
4442
+
4443
+ Now, throw the dice 20 times, and 20 times again:
4444
+
4445
+ >>> np.random.multinomial(20, [1/6.]*6, size=2)
4446
+ array([[3, 4, 3, 3, 4, 3],
4447
+ [2, 4, 3, 4, 0, 7]])
4448
+
4449
+ For the first run, we threw 3 times 1, 4 times 2, etc. For the second,
4450
+ we threw 2 times 1, 4 times 2, etc.
4451
+
4452
+ A loaded dice is more likely to land on number 6:
4453
+
4454
+ >>> np.random.multinomial(100, [1/7.]*5)
4455
+ array([13, 16, 13, 16, 42])
4456
+
4457
+ """
4458
+ cdef npy_intp d
4459
+ cdef ndarray parr "arrayObject_parr", mnarr "arrayObject_mnarr"
4460
+ cdef double *pix
4461
+ cdef long *mnix
4462
+ cdef npy_intp i, j, dn, sz
4463
+ cdef double Sum
4464
+
4465
+ d = len(pvals)
4466
+ parr = <ndarray>PyArray_ContiguousFromObject(pvals, NPY_DOUBLE, 1, 1)
4467
+ pix = <double*>PyArray_DATA(parr)
4468
+
4469
+ if kahan_sum(pix, d-1) > (1.0 + 1e-12):
4470
+ raise ValueError("sum(pvals[:-1]) > 1.0")
4471
+
4472
+ shape = _shape_from_size(size, d)
4473
+
4474
+ multin = np.zeros(shape, int)
4475
+ mnarr = <ndarray>multin
4476
+ mnix = <long*>PyArray_DATA(mnarr)
4477
+ sz = PyArray_SIZE(mnarr)
4478
+ with self.lock, nogil:
4479
+ i = 0
4480
+ while i < sz:
4481
+ Sum = 1.0
4482
+ dn = n
4483
+ for j from 0 <= j < d-1:
4484
+ mnix[i+j] = rk_binomial(self.internal_state, dn, pix[j]/Sum)
4485
+ dn = dn - mnix[i+j]
4486
+ if dn <= 0:
4487
+ break
4488
+ Sum = Sum - pix[j]
4489
+ if dn > 0:
4490
+ mnix[i+d-1] = dn
4491
+
4492
+ i = i + d
4493
+
4494
+ return multin
4495
+
4496
+ def dirichlet(self, object alpha, size=None):
4497
+ """
4498
+ dirichlet(alpha, size=None)
4499
+
4500
+ Draw samples from the Dirichlet distribution.
4501
+
4502
+ Draw `size` samples of dimension k from a Dirichlet distribution. A
4503
+ Dirichlet-distributed random variable can be seen as a multivariate
4504
+ generalization of a Beta distribution. Dirichlet pdf is the conjugate
4505
+ prior of a multinomial in Bayesian inference.
4506
+
4507
+ Parameters
4508
+ ----------
4509
+ alpha : array
4510
+ Parameter of the distribution (k dimension for sample of
4511
+ dimension k).
4512
+ size : int or tuple of ints, optional
4513
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
4514
+ ``m * n * k`` samples are drawn. Default is None, in which case a
4515
+ single value is returned.
4516
+
4517
+ Returns
4518
+ -------
4519
+ samples : ndarray,
4520
+ The drawn samples, of shape (size, alpha.ndim).
4521
+
4522
+ Notes
4523
+ -----
4524
+ .. math:: X \\approx \\prod_{i=1}^{k}{x^{\\alpha_i-1}_i}
4525
+
4526
+ Uses the following property for computation: for each dimension,
4527
+ draw a random sample y_i from a standard gamma generator of shape
4528
+ `alpha_i`, then
4529
+ :math:`X = \\frac{1}{\\sum_{i=1}^k{y_i}} (y_1, \\ldots, y_n)` is
4530
+ Dirichlet distributed.
4531
+
4532
+ References
4533
+ ----------
4534
+ .. [1] David McKay, "Information Theory, Inference and Learning
4535
+ Algorithms," chapter 23,
4536
+ http://www.inference.phy.cam.ac.uk/mackay/
4537
+ .. [2] Wikipedia, "Dirichlet distribution",
4538
+ http://en.wikipedia.org/wiki/Dirichlet_distribution
4539
+
4540
+ Examples
4541
+ --------
4542
+ Taking an example cited in Wikipedia, this distribution can be used if
4543
+ one wanted to cut strings (each of initial length 1.0) into K pieces
4544
+ with different lengths, where each piece had, on average, a designated
4545
+ average length, but allowing some variation in the relative sizes of
4546
+ the pieces.
4547
+
4548
+ >>> s = np.random.dirichlet((10, 5, 3), 20).transpose()
4549
+
4550
+ >>> plt.barh(range(20), s[0])
4551
+ >>> plt.barh(range(20), s[1], left=s[0], color='g')
4552
+ >>> plt.barh(range(20), s[2], left=s[0]+s[1], color='r')
4553
+ >>> plt.title("Lengths of Strings")
4554
+
4555
+ """
4556
+
4557
+ #=================
4558
+ # Pure python algo
4559
+ #=================
4560
+ #alpha = N.atleast_1d(alpha)
4561
+ #k = alpha.size
4562
+
4563
+ #if n == 1:
4564
+ # val = N.zeros(k)
4565
+ # for i in range(k):
4566
+ # val[i] = sgamma(alpha[i], n)
4567
+ # val /= N.sum(val)
4568
+ #else:
4569
+ # val = N.zeros((k, n))
4570
+ # for i in range(k):
4571
+ # val[i] = sgamma(alpha[i], n)
4572
+ # val /= N.sum(val, axis = 0)
4573
+ # val = val.T
4574
+
4575
+ #return val
4576
+
4577
+ cdef npy_intp k
4578
+ cdef npy_intp totsize
4579
+ cdef ndarray alpha_arr, val_arr
4580
+ cdef double *alpha_data
4581
+ cdef double *val_data
4582
+ cdef npy_intp i, j
4583
+ cdef double acc, invacc
4584
+
4585
+ k = len(alpha)
4586
+ alpha_arr = <ndarray>PyArray_ContiguousFromObject(alpha, NPY_DOUBLE, 1, 1)
4587
+ alpha_data = <double*>PyArray_DATA(alpha_arr)
4588
+
4589
+ shape = _shape_from_size(size, k)
4590
+
4591
+ diric = np.zeros(shape, np.float64)
4592
+ val_arr = <ndarray>diric
4593
+ val_data= <double*>PyArray_DATA(val_arr)
4594
+
4595
+ i = 0
4596
+ totsize = PyArray_SIZE(val_arr)
4597
+ with self.lock, nogil:
4598
+ while i < totsize:
4599
+ acc = 0.0
4600
+ for j from 0 <= j < k:
4601
+ val_data[i+j] = rk_standard_gamma(self.internal_state,
4602
+ alpha_data[j])
4603
+ acc = acc + val_data[i+j]
4604
+ invacc = 1/acc
4605
+ for j from 0 <= j < k:
4606
+ val_data[i+j] = val_data[i+j] * invacc
4607
+ i = i + k
4608
+
4609
+ return diric
4610
+
4611
+ # Shuffling and permutations:
4612
+ def shuffle(self, object x):
4613
+ """
4614
+ shuffle(x)
4615
+
4616
+ Modify a sequence in-place by shuffling its contents.
4617
+
4618
+ Parameters
4619
+ ----------
4620
+ x : array_like
4621
+ The array or list to be shuffled.
4622
+
4623
+ Returns
4624
+ -------
4625
+ None
4626
+
4627
+ Examples
4628
+ --------
4629
+ >>> arr = np.arange(10)
4630
+ >>> np.random.shuffle(arr)
4631
+ >>> arr
4632
+ [1 7 5 2 9 4 3 6 0 8]
4633
+
4634
+ This function only shuffles the array along the first index of a
4635
+ multi-dimensional array:
4636
+
4637
+ >>> arr = np.arange(9).reshape((3, 3))
4638
+ >>> np.random.shuffle(arr)
4639
+ >>> arr
4640
+ array([[3, 4, 5],
4641
+ [6, 7, 8],
4642
+ [0, 1, 2]])
4643
+
4644
+ """
4645
+ cdef npy_intp i, j
4646
+
4647
+ i = len(x) - 1
4648
+
4649
+ # Logic adapted from random.shuffle()
4650
+ if isinstance(x, np.ndarray) and \
4651
+ (x.ndim > 1 or x.dtype.fields is not None):
4652
+ # For a multi-dimensional ndarray, indexing returns a view onto
4653
+ # each row. So we can't just use ordinary assignment to swap the
4654
+ # rows; we need a bounce buffer.
4655
+ buf = np.empty_like(x[0])
4656
+ with self.lock:
4657
+ while i > 0:
4658
+ j = rk_interval(i, self.internal_state)
4659
+ buf[...] = x[j]
4660
+ x[j] = x[i]
4661
+ x[i] = buf
4662
+ i = i - 1
4663
+ else:
4664
+ # For single-dimensional arrays, lists, and any other Python
4665
+ # sequence types, indexing returns a real object that's
4666
+ # independent of the array contents, so we can just swap directly.
4667
+ with self.lock:
4668
+ while i > 0:
4669
+ j = rk_interval(i, self.internal_state)
4670
+ x[i], x[j] = x[j], x[i]
4671
+ i = i - 1
4672
+
4673
+ def permutation(self, object x):
4674
+ """
4675
+ permutation(x)
4676
+
4677
+ Randomly permute a sequence, or return a permuted range.
4678
+
4679
+ If `x` is a multi-dimensional array, it is only shuffled along its
4680
+ first index.
4681
+
4682
+ Parameters
4683
+ ----------
4684
+ x : int or array_like
4685
+ If `x` is an integer, randomly permute ``np.arange(x)``.
4686
+ If `x` is an array, make a copy and shuffle the elements
4687
+ randomly.
4688
+
4689
+ Returns
4690
+ -------
4691
+ out : ndarray
4692
+ Permuted sequence or array range.
4693
+
4694
+ Examples
4695
+ --------
4696
+ >>> np.random.permutation(10)
4697
+ array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])
4698
+
4699
+ >>> np.random.permutation([1, 4, 9, 12, 15])
4700
+ array([15, 1, 9, 4, 12])
4701
+
4702
+ >>> arr = np.arange(9).reshape((3, 3))
4703
+ >>> np.random.permutation(arr)
4704
+ array([[6, 7, 8],
4705
+ [0, 1, 2],
4706
+ [3, 4, 5]])
4707
+
4708
+ """
4709
+ if isinstance(x, (int, long, np.integer)):
4710
+ arr = np.arange(x)
4711
+ else:
4712
+ arr = np.array(x)
4713
+ self.shuffle(arr)
4714
+ return arr
4715
+
4716
+ _rand = RandomState()
4717
+ seed = _rand.seed
4718
+ get_state = _rand.get_state
4719
+ set_state = _rand.set_state
4720
+ random_sample = _rand.random_sample
4721
+ choice = _rand.choice
4722
+ randint = _rand.randint
4723
+ bytes = _rand.bytes
4724
+ uniform = _rand.uniform
4725
+ rand = _rand.rand
4726
+ randn = _rand.randn
4727
+ random_integers = _rand.random_integers
4728
+ standard_normal = _rand.standard_normal
4729
+ normal = _rand.normal
4730
+ beta = _rand.beta
4731
+ exponential = _rand.exponential
4732
+ standard_exponential = _rand.standard_exponential
4733
+ standard_gamma = _rand.standard_gamma
4734
+ gamma = _rand.gamma
4735
+ f = _rand.f
4736
+ noncentral_f = _rand.noncentral_f
4737
+ chisquare = _rand.chisquare
4738
+ noncentral_chisquare = _rand.noncentral_chisquare
4739
+ standard_cauchy = _rand.standard_cauchy
4740
+ standard_t = _rand.standard_t
4741
+ vonmises = _rand.vonmises
4742
+ pareto = _rand.pareto
4743
+ weibull = _rand.weibull
4744
+ power = _rand.power
4745
+ laplace = _rand.laplace
4746
+ gumbel = _rand.gumbel
4747
+ logistic = _rand.logistic
4748
+ lognormal = _rand.lognormal
4749
+ rayleigh = _rand.rayleigh
4750
+ wald = _rand.wald
4751
+ triangular = _rand.triangular
4752
+
4753
+ binomial = _rand.binomial
4754
+ negative_binomial = _rand.negative_binomial
4755
+ poisson = _rand.poisson
4756
+ zipf = _rand.zipf
4757
+ geometric = _rand.geometric
4758
+ hypergeometric = _rand.hypergeometric
4759
+ logseries = _rand.logseries
4760
+
4761
+ multivariate_normal = _rand.multivariate_normal
4762
+ multinomial = _rand.multinomial
4763
+ dirichlet = _rand.dirichlet
4764
+
4765
+ shuffle = _rand.shuffle
4766
+ permutation = _rand.permutation