Skip to main content

Fast numerical expression evaluator for NumPy

Project description

Author:

David M. Cooke, Francesc Alted and others

Contact:
faltet@gmail.com
URL:

https://github.com/pydata/numexpr

Travis CI:

travis

Appveyor:

appveyor

PyPi:

version pypi

What it is Numexpr?

Numexpr is a fast numerical expression evaluator for NumPy. With it, expressions that operate on arrays (like “3*a+4*b”) are accelerated and use less memory than doing the same calculation in Python.

In addition, its multi-threaded capabilities can make use of all your cores – which may accelerate computations, most specially if they are not memory-bounded (e.g. those using transcendental functions).

Last but not least, numexpr can make use of Intel’s VML (Vector Math Library, normally integrated in its Math Kernel Library, or MKL). This allows further acceleration of transcendent expressions.

How Numexpr achieves high performance

The main reason why Numexpr achieves better performance than NumPy is that it avoids allocating memory for intermediate results. This results in better cache utilization and reduces memory access in general. Due to this, Numexpr works best with large arrays.

Numexpr parses expressions into its own op-codes that are then used by an integrated computing virtual machine. The array operands are split into small chunks that easily fit in the cache of the CPU and passed to the virtual machine. The virtual machine then applies the operations on each chunk. It’s worth noting that all temporaries and constants in the expression are also chunked.

The result is that Numexpr can get the most of your machine computing capabilities for array-wise computations. Common speed-ups with regard to NumPy are usually between 0.95x (for very simple expressions like ’a + 1’) and 4x (for relatively complex ones like ‘a*b-4.1*a > 2.5*b’), although much higher speed-ups can be achieved (up to 15x in some cases).

Numexpr performs best on matrices that do not fit in CPU cache. In order to get a better idea on the different speed-ups that can be achieved on your platform, run the provided benchmarks.

See more info about how Numexpr works in the wiki.

Examples of use

>>> import numpy as np
>>> import numexpr as ne

>>> a = np.arange(1e6)   # Choose large arrays for better speedups
>>> b = np.arange(1e6)

>>> ne.evaluate("a + 1")   # a simple expression
array([  1.00000000e+00,   2.00000000e+00,   3.00000000e+00, ...,
         9.99998000e+05,   9.99999000e+05,   1.00000000e+06])

>>> ne.evaluate('a*b-4.1*a > 2.5*b')   # a more complex one
array([False, False, False, ...,  True,  True,  True], dtype=bool)

>>> ne.evaluate("sin(a) + arcsinh(a/b)")   # you can also use functions
array([        NaN,  1.72284457,  1.79067101, ...,  1.09567006,
        0.17523598, -0.09597844])

>>> s = np.array(['abba', 'abbb', 'abbcdef'])
>>> ne.evaluate("'abba' == s")   # string arrays are supported too
array([ True, False, False], dtype=bool)

Datatypes supported internally

Numexpr operates internally only with the following types:

* 8-bit boolean (bool)
* 32-bit signed integer (int or int32)
* 64-bit signed integer (long or int64)
* 32-bit single-precision floating point number (float or float32)
* 64-bit, double-precision floating point number (double or float64)
* 2x64-bit, double-precision complex number (complex or complex128)
* Raw string of bytes (str)

If the arrays in the expression does not match any of these types, they will be upcasted to one of the above types (following the usual type inference rules, see below). Have this in mind when doing estimations about the memory consumption during the computation of your expressions.

Also, the types in Numexpr conditions are somewhat more restrictive than those of Python. For instance, the only valid constants for booleans are True and False, and they are never automatically cast to integers.

Casting rules

Casting rules in Numexpr follow closely those of NumPy. However, for implementation reasons, there are some known exceptions to this rule, namely:

* When an array with type `int8`, `uint8`, `int16` or `uint16` is
  used inside Numexpr, it is internally upcasted to an `int` (or
  `int32` in NumPy notation).

* When an array with type `uint32` is used inside Numexpr, it is
  internally upcasted to a `long` (or `int64` in NumPy notation).

* A floating point function (e.g. `sin`) acting on `int8` or
  `int16` types returns a `float64` type, instead of the `float32`
  that is returned by NumPy functions.  This is mainly due to the
  absence of native `int8` or `int16` types in Numexpr.

* In operations implying a scalar and an array, the normal rules
  of casting are used in Numexpr, in contrast with NumPy, where
  array types takes priority.  For example, if 'a' is an array of
  type `float32` and 'b' is an scalar of type `float64` (or Python
  `float` type, which is equivalent), then 'a*b' returns a
  `float64` in Numexpr, but a `float32` in NumPy (i.e. array
  operands take priority in determining the result type).  If you
  need to keep the result a `float32`, be sure you use a `float32`
  scalar too.

Supported operators

Numexpr supports the set of operators listed below:

* Logical operators: &, |, ~
* Comparison operators: <, <=, ==, !=, >=, >
* Unary arithmetic operators: -
* Binary arithmetic operators: +, -, *, /, **, %, <<, >>

Supported functions

Supported functions are listed below:

* where(bool, number1, number2): number
    Number1 if the bool condition is true, number2 otherwise.
* {sin,cos,tan}(float|complex): float|complex
    Trigonometric sine, cosine or tangent.
* {arcsin,arccos,arctan}(float|complex): float|complex
    Trigonometric inverse sine, cosine or tangent.
* arctan2(float1, float2): float
    Trigonometric inverse tangent of float1/float2.
* {sinh,cosh,tanh}(float|complex): float|complex
    Hyperbolic sine, cosine or tangent.
* {arcsinh,arccosh,arctanh}(float|complex): float|complex
    Hyperbolic inverse sine, cosine or tangent.
* {log,log10,log1p}(float|complex): float|complex
    Natural, base-10 and log(1+x) logarithms.
* {exp,expm1}(float|complex): float|complex
    Exponential and exponential minus one.
* sqrt(float|complex): float|complex
    Square root.
* abs(float|complex): float|complex
    Absolute value.
* conj(complex): complex
    Conjugate value.
* {real,imag}(complex): float
    Real or imaginary part of complex.
* complex(float, float): complex
    Complex from real and imaginary parts.
* contains(str, str): bool
    Returns True for every string in `op1` that contains `op2`.

You may add additional functions as needed.

Supported reduction operations

The following reduction operations are currently supported:

* sum(number, axis=None): Sum of array elements over a given axis.
  Negative axis are not supported.

* prod(number, axis=None): Product of array elements over a given
  axis.  Negative axis are not supported.

* min(number, axis=None): Minimum of array elements over a given
  axis.  Negative axis are not supported.

* max(number, axis=None): Maximum of array elements over a given
  axis.  Negative axis are not supported.

General routines

* evaluate(expression, local_dict=None, global_dict=None,
           out=None, order='K', casting='safe', **kwargs):
  Evaluate a simple array expression element-wise.  See docstrings
  for more info on parameters.  Also, see examples above.

* re_evaluate(local_dict=None):
  Re-evaluate the previous executed array expression without any
  check.  This is meant for accelerating loops that are
  re-evaluating the same expression repeatedly without changing
  anything else than the operands.  If unsure, use evaluate() which
  is safer.

* test():  Run all the tests in the test suite.

* print_versions():  Print the versions of software that numexpr
  relies on.

* set_num_threads(nthreads): Sets a number of threads to be used in
  operations.  Returns the previous setting for the number of
  threads.  During initialization time Numexpr sets this number to
  the number of detected cores in the system (see
  `detect_number_of_cores()`).

  If you are using Intel's VML, you may want to use
  `set_vml_num_threads(nthreads)` to perform the parallel job with
  VML instead.  However, you should get very similar performance
  with VML-optimized functions, and VML's parallelizer cannot deal
  with common expressions like `(x+1)*(x-2)`, while Numexpr's one
  can.

* detect_number_of_cores(): Detects the number of cores in the
  system.

Intel’s VML specific support routines

When compiled with Intel’s VML (Vector Math Library), you will be able to use some additional functions for controlling its use. These are outlined below:

* set_vml_accuracy_mode(mode):  Set the accuracy for VML operations.
The mode parameter can take the values:
  • ‘low’: Equivalent to VML_LA - low accuracy VML functions are called

  • ‘high’: Equivalent to VML_HA - high accuracy VML functions are called

  • ‘fast’: Equivalent to VML_EP - enhanced performance VML functions are called

It returns the previous mode.

This call is equivalent to the vmlSetMode() in the VML library.

* set_vml_num_threads(nthreads): Suggests a maximum number of
  threads to be used in VML operations.

This function is equivalent to the call mkl_domain_set_num_threads(nthreads, MKL_DOMAIN_VML) in the MKL library.

See the Intel documentation on VM Service Functions for more information.

  • get_vml_version(): Get the VML/MKL library version.

Authors

See AUTHORS.txt

License

Numexpr is distributed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numexpr-2.6.2.tar.gz (91.0 kB view details)

Uploaded Source

Built Distributions

numexpr-2.6.2-cp36-none-win_amd64.whl (86.2 kB view details)

Uploaded CPython 3.6 Windows x86-64

numexpr-2.6.2-cp36-none-win32.whl (84.5 kB view details)

Uploaded CPython 3.6 Windows x86

numexpr-2.6.2-cp36-cp36m-manylinux1_x86_64.whl (378.0 kB view details)

Uploaded CPython 3.6m

numexpr-2.6.2-cp36-cp36m-manylinux1_i686.whl (386.0 kB view details)

Uploaded CPython 3.6m

numexpr-2.6.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (170.9 kB view details)

Uploaded CPython 3.6m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

numexpr-2.6.2-cp35-none-win_amd64.whl (86.2 kB view details)

Uploaded CPython 3.5 Windows x86-64

numexpr-2.6.2-cp35-none-win32.whl (84.5 kB view details)

Uploaded CPython 3.5 Windows x86

numexpr-2.6.2-cp35-cp35m-manylinux1_x86_64.whl (377.9 kB view details)

Uploaded CPython 3.5m

numexpr-2.6.2-cp35-cp35m-manylinux1_i686.whl (386.0 kB view details)

Uploaded CPython 3.5m

numexpr-2.6.2-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (170.9 kB view details)

Uploaded CPython 3.5m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

numexpr-2.6.2-cp34-none-win_amd64.whl (82.3 kB view details)

Uploaded CPython 3.4 Windows x86-64

numexpr-2.6.2-cp34-none-win32.whl (83.2 kB view details)

Uploaded CPython 3.4 Windows x86

numexpr-2.6.2-cp34-cp34m-manylinux1_x86_64.whl (377.5 kB view details)

Uploaded CPython 3.4m

numexpr-2.6.2-cp34-cp34m-manylinux1_i686.whl (385.6 kB view details)

Uploaded CPython 3.4m

numexpr-2.6.2-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (170.8 kB view details)

Uploaded CPython 3.4m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

numexpr-2.6.2-cp27-none-win_amd64.whl (103.7 kB view details)

Uploaded CPython 2.7 Windows x86-64

numexpr-2.6.2-cp27-none-win32.whl (107.5 kB view details)

Uploaded CPython 2.7 Windows x86

numexpr-2.6.2-cp27-cp27mu-manylinux1_x86_64.whl (364.0 kB view details)

Uploaded CPython 2.7mu

numexpr-2.6.2-cp27-cp27mu-manylinux1_i686.whl (372.1 kB view details)

Uploaded CPython 2.7mu

numexpr-2.6.2-cp27-cp27m-manylinux1_x86_64.whl (364.0 kB view details)

Uploaded CPython 2.7m

numexpr-2.6.2-cp27-cp27m-manylinux1_i686.whl (372.1 kB view details)

Uploaded CPython 2.7m

numexpr-2.6.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (170.3 kB view details)

Uploaded CPython 2.7m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

File details

Details for the file numexpr-2.6.2.tar.gz.

File metadata

  • Download URL: numexpr-2.6.2.tar.gz
  • Upload date:
  • Size: 91.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for numexpr-2.6.2.tar.gz
Algorithm Hash digest
SHA256 6ab8ff5c19e7f452966bf5a3220b845cf3244fe0b96544f7f9acedcc2db5c705
MD5 943f8e4be7569b1ad01b10cbaa002a5c
BLAKE2b-256 31437777ab9535c416faabd1865453389260fdad0a23a714609c13112885009a

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp36-none-win_amd64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp36-none-win_amd64.whl
Algorithm Hash digest
SHA256 783ad2c913f94af68f110c878536d2aca87594c6618c483a52f04879661bbe6d
MD5 bec45a0c1f4d30ecd00c689360dffa29
BLAKE2b-256 de26bf6d3e0c9970c1da8cbe7947537c9a48a114f19df446ca5f01f3664e2d31

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp36-none-win32.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp36-none-win32.whl
Algorithm Hash digest
SHA256 7c76e211914540bc7fc99a1cfe9ea4afa4a593016ee76289bd0947f802cf083a
MD5 787d5437c960db06f9dff05bc2c59396
BLAKE2b-256 034cbce74b251f468f571b4bb9be60a054bdf87177bfc041d21f5106c93fc6a5

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6d76098433f3345eba0d2932a3d5f24d478af6d77679433b4bf5d4d6dda1265b
MD5 e494f68e9a6d4b4acbae7e5b91db7e96
BLAKE2b-256 f9fdd17b6e9e4538c922daa47468fdb4d33e7d8e77342338ab239ee47149893b

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp36-cp36m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 5727bca8b2405df88b7b26d535d3219d067b75ca2ab7a860cf8540eefab2bd7b
MD5 1a2a3464aeb1e7dfb7cb24ba710192a2
BLAKE2b-256 7bcf709b4caed0182053a7501a30f5d260b91ce05e94b96ddc2525c1dc3bc56c

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 883d2f47ab90adfa7c43294dc002bf209787a065be72c9138bba659a7b9eeb21
MD5 ebd27c1f15882a6a485136b92f6f1629
BLAKE2b-256 4a0ad04e720027ab2230e1b63f3263d73e4ded136946cf79291440bef6635cfe

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp35-none-win_amd64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp35-none-win_amd64.whl
Algorithm Hash digest
SHA256 3cab1e468f106cb9df770baece4919a35482bbc34cf4d0648a8358d318e54460
MD5 ede6611da0e11418017f42e14fd76c49
BLAKE2b-256 2789a819a6749bcda97de88722fb499c3fe59f5de1d74a70dc77142d5151be1f

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp35-none-win32.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp35-none-win32.whl
Algorithm Hash digest
SHA256 2f16a5f6aa5df7246d726777ec24acc155d0b78244e0204c8ecfe6588e2b121d
MD5 b3c4e21ed6bc48627b50357ff0908b44
BLAKE2b-256 22b125cbfafe5d5bbda882e7842082ba996c98fb325d5dfbd21237a4133e6489

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2eafc97f8ae8ad599fd015d1ef038145891551802dabf68c265b4e16f27a6746
MD5 2e77aadc5bbca13687b97366db967571
BLAKE2b-256 fc636499a9628d8e6ac9d576f2c5a6bd38a6b4fc6e8cc518502fa987eedcf93a

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp35-cp35m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 0460a0adf33a93b3477a2cfcf15a03464c53a6ec40136b7ba899446920b45079
MD5 5fa5bdaac3b36755bd9325cb8e8be373
BLAKE2b-256 5200139d0089835e73e1e8f5e828b3edb0a6b5edf06f38fbe7d67550b45f6829

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 ed4431d5acc18eec477ffab1b8bffa59fd31c81894659f42fbe88dde78d8e1e2
MD5 f3399a8cfb2a25d962695bd1a4d83f75
BLAKE2b-256 06fcc2d1110e7edc1f403928bd3b2accf0cfb3f288bff5c01eb36c3a84e14424

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp34-none-win_amd64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 22c48be646998793877fc47cf26b662446a3deab1ae4da24cbb76f875759fd84
MD5 b0b613817f45ad6cdcd95a989d2f305a
BLAKE2b-256 f38b69033ffa1818336fb502a6a1a90fc364202901ae3dbfd8f6b20000d71496

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp34-none-win32.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp34-none-win32.whl
Algorithm Hash digest
SHA256 9772910b7ff27eb67aadd1788aff39e03eeaf7a21a33f1cc87833d1d74a610a8
MD5 03f57e9312f6953d28031e160d34fa60
BLAKE2b-256 1fdffc803de4a83ff22e94e79f7a2e6ca78ddb825b047581d560eda509ebe416

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 daf41cf30d100b516cd5019f88872d40355ddcd5170f45893b59220ab2737360
MD5 3724ef63ed23dd4ac95b02bdb1de51fb
BLAKE2b-256 50dd4d55deba908dbf7ddfb89c97ae8140feffcf5ae00b14f55dcef64b51fc98

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp34-cp34m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 362b17ce6ad90749f873b722d1a2af07046d5ad89cb241bd3c7760f119e04ca7
MD5 9cf9f854134b25f4700a2a4eaecf85a3
BLAKE2b-256 48c720b82ba7cac5114b82476b2cb5d748a65f0ea609223e9ad402009051c10a

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 f1636ca0f90fd119c9b4a4ae1ba5caf11732e7a7d6252e4c96bed67e5e27d182
MD5 76c0b4fefaf3c45fc9bca69254832252
BLAKE2b-256 6775d50d1b3b2a33a3228bde5e8149359902e13058516e505cf20688076df682

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-none-win_amd64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-none-win_amd64.whl
Algorithm Hash digest
SHA256 85588324d252d041e74f048668aad73b75e40984c373a3aff8a8aad78db66ab2
MD5 a9eb0b703430037049c302b1fefdc8da
BLAKE2b-256 12d19740a74309ae01034d4e852407eb114fe0d148ae8c91d0e841ef9dd9874f

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-none-win32.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-none-win32.whl
Algorithm Hash digest
SHA256 b0f8377da896313b1fb0444444e2eedb0084da55b450a68ebe6fbe5d0186913b
MD5 9777369d02b11cc0f881bfaf2bdd82a4
BLAKE2b-256 fa9fb805d77995198f7ab73df4a9780f550576b3fd586288e581434cb283efd1

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2cc252330551d3487d25af598cfa8cf098316e8cedc1bf20cd8b0029977b44c5
MD5 80389279a484c12dacd0391fa876ac46
BLAKE2b-256 b3b70ea4e7a8dec3fcf63f2c868eff2b0c7501e37b52c077a3e6f391c2bd2f20

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-cp27mu-manylinux1_i686.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-cp27mu-manylinux1_i686.whl
Algorithm Hash digest
SHA256 ca59ca17d3865ba7f0262716b3f1f3827189d589a31433dce71451a78e7fdb08
MD5 ad6a9c67a03b45493c9ad9b1799a9acd
BLAKE2b-256 52ff49f64b9cf2b75f634fe5bfe207b4bccd2088365221356d89498a0ac39f27

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f8649fa20e3b1320c5b835948e8901bb0d113ad55467c0eb333a94249562c98b
MD5 f27987b340d97edf723d780e4f53b68a
BLAKE2b-256 48160a508e29f2aa353483733d5c331f92520d4ab370a0e0c3771c46ae44239e

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-cp27m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-cp27m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 11516f075617b1172ad8061d75ba3f574688276b10b863762b4ada345b3d3476
MD5 b2c35ed5831311e2bd20e936c134ec3d
BLAKE2b-256 34cb1ea7967e6b852d9378477c32bd6676e466fed2f4af4d2912c0ab23968ca7

See more details on using hashes here.

File details

Details for the file numexpr-2.6.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for numexpr-2.6.2-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 2dc50be71fb606bfef1b629ca86dea368d925e3d0efa1a80515ebbb0813d63e3
MD5 989f07f34a7d67432a47916d660a1bbf
BLAKE2b-256 dd94fd5e444a837355815a0e8d59b7df5b84f648eae84ae478c15154ae5eb65e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page