Personal tools
You are here: Home Zpydoc API documentation numpy

 numpy  (1.2.0)

Up one level
numpy
NumPy ===== Provides 1. An array object of arbitrary homogeneous items 2. Fast mathematical operations over arrays 3. Linear Algebra, Fourier Transforms, Random Number Generation How to use the documentation ---------------------------- Documentation is available in two forms: docstrings provided with the code, and a loose standing reference guide, available from `the NumPy homepage <http://www.scipy.org>`_. We recommend exploring the docstrings using `IPython <http://ipython.scipy.org>`_, an advanced Python shell with TAB-completion and introspection capabilities. See below for further instructions. The docstring examples assume that `numpy` has been imported as `np`:: >>> import numpy as np Code snippets are indicated by three greater-than signs:: >>> x = x + 1 Use the built-in ``help`` function to view a function's docstring:: >>> help(np.sort) For some objects, ``np.info(obj)`` may provide additional help. To search for objects of which the documentation contains keywords, do:: >>> np.lookfor('keyword') Topical documentation is available under the ``doc`` sub-module:: >>> from numpy import doc >>> help(doc) Available subpackages --------------------- doc Topical documentation on broadcasting, indexing, etc. lib Basic functions used by several sub-packages. random Core Random Tools linalg Core Linear Algebra Tools fft Core FFT routines testing Numpy testing tools f2py Fortran to Python Interface Generator. distutils Enhancements to distutils with support for Fortran compilers support and more. Utilities --------- test Run numpy unittests show_config Show numpy build configuration dual Overwrite certain functions with high-performance Scipy tools matlib Make everything matrices. __version__ Numpy version string Viewing documentation using IPython ----------------------------------- Start IPython with the NumPy profile (``ipython -p numpy``), which will import `numpy` under the alias `np`. Then, use the ``cpaste`` command to paste examples into the shell. To see which functions are available in `numpy`, type ``np.<TAB>`` (where ``<TAB>`` refers to the TAB key), or use ``np.*cos*?<ENTER>`` (where ``<ENTER>`` refers to the ENTER key) to narrow down the list. To view the docstring for a function, use ``np.cos?<ENTER>`` (to view the docstring) and ``np.cos??<ENTER>`` (to view the source code). Copies vs. in-place operation ----------------------------- Most of the methods in `numpy` return a copy of the array argument (e.g., `sort`). In-place versions of these methods are often available as array methods, i.e. ``x = np.array([1,2,3]); x.sort()``. Exceptions to this rule are documented.
Modules
__config__ add_newdocs version
_import_tools ctypeslib
Classes
  class bool_ ( generic )
  class bool_ ( generic )
  class broadcast ( object )
  class int8 ( signedinteger )
  class complex128 ( complexfloating , complex )
Composed of two 64 bit floats
  class complex128 ( complexfloating , complex )
Composed of two 64 bit floats
  class character ( flexible )
  class complex256 ( complexfloating )
Composed of two 128 bit floats
  class complex256 ( complexfloating )
Composed of two 128 bit floats
  class complex128 ( complexfloating , complex )
Composed of two 64 bit floats
  class complex256 ( complexfloating )
Composed of two 128 bit floats
  class complex64 ( complexfloating )
Composed of two 32 bit floats
  class complex128 ( complexfloating , complex )
Composed of two 64 bit floats
  class complexfloating ( inexact )
  class complex64 ( complexfloating )
Composed of two 32 bit floats
  class float64 ( floating , float )
  class dtype ( object )
Create a data type. A numpy array is homogeneous, and contains elements described by a dtype. A dtype can be constructed from different combinations of fundamental numeric types, as illustrated below. Examples -------- Using array-scalar type: >>> np.dtype(np.int16) dtype('int16') Record, one field name 'f1', containing int16: >>> np.dtype([('f1', np.int16)]) dtype([('f1', '<i2')]) Record, one field named 'f1', in itself containing a record with one field: >>> np.dtype([('f1', [('f1', np.int16)])]) dtype([('f1', [('f1', '<i2')])]) Record, two fields: the first field contains an unsigned int, the second an int32: >>> np.dtype([('f1', np.uint), ('f2', np.int32)]) dtype([('f1', '<u4'), ('f2', '<i4')]) Using array-protocol type strings: >>> np.dtype([('a','f8'),('b','S10')]) dtype([('a', '<f8'), ('b', '|S10')]) Using comma-separated field formats. The shape is (2,3): >>> np.dtype("i4, (2,3)f8") dtype([('f0', '<i4'), ('f1', '<f8', (2, 3))]) Using tuples. ``int`` is a fixed type, 3 the field's shape. ``void`` is a flexible type, here of size 10: >>> np.dtype([('hello',(np.int,3)),('world',np.void,10)]) dtype([('hello', '<i4', 3), ('world', '|V10')]) Subdivide ``int16`` into 2 ``int8``'s, called x and y. 0 and 1 are the offsets in bytes: >>> np.dtype((np.int16, {'x':(np.int8,0), 'y':(np.int8,1)})) dtype(('<i2', [('x', '|i1'), ('y', '|i1')])) Using dictionaries. Two fields named 'gender' and 'age': >>> np.dtype({'names':['gender','age'], 'formats':['S1',np.uint8]}) dtype([('gender', '|S1'), ('age', '|u1')]) Offsets in bytes, here 0 and 25: >>> np.dtype({'surname':('S25',0),'age':(np.uint8,25)}) dtype([('surname', '|S25'), ('age', '|u1')])
  class flatiter ( object )
  class flexible ( generic )
  class float128 ( floating )
  class float32 ( floating )
  class float64 ( floating , float )
  class float64 ( floating , float )
  class floating ( inexact )
  class generic ( object )
  class inexact ( number )
  class int64 ( signedinteger , int )
  class int16 ( signedinteger )
  class int32 ( signedinteger )
  class int64 ( signedinteger , int )
  class int8 ( signedinteger )
  class int64 ( signedinteger , int )
  class int32 ( signedinteger )
  class integer ( number )
  class int64 ( signedinteger , int )
  class complex256 ( complexfloating )
Composed of two 128 bit floats
  class float128 ( floating )
  class float128 ( floating )
  class int64 ( signedinteger , int )
  class ndarray ( object )
ndarray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None) An array object represents a multidimensional, homogeneous array of fixed-size items. An associated data-type object describes the format of each element in the array (its byte-order, how many bytes it occupies in memory, whether it is an integer or a floating point number, etc.). Arrays should be constructed using `array`, `zeros` or `empty` (refer to the ``See Also`` section below). The parameters given here describe a low-level method for instantiating an array (`ndarray(...)`). For more information, refer to the `numpy` module and examine the the methods and attributes of an array. Attributes ---------- T : ndarray Transponent of the array. data : buffer Array data in memory. dtype : data type Data type, describing the format of the elements in the array. flags : dict Dictionary containing information related to memory use, e.g., 'C_CONTIGUOUS', 'OWNDATA', 'WRITEABLE', and others. flat : ndarray Return flattened version of the array as an iterator. The iterator allows assignments, e.g., ``x.flat = 3``. imag : ndarray Imaginary part of the array. real : ndarray Real part of the array. size : int Number of elements in the array. itemsize : int The size of each element in memory (in bytes). nbytes : int The total number of bytes required to store the array data, i.e., ``itemsize * size``. shape : tuple of ints Shape of the array. strides : tuple of ints The step-size required to move from one element to the next in memory. For example, a contiguous ``(3, 4)`` array of type ``int16`` in C-order has strides ``(8, 2)``. This implies that to move from element to element in memory requires jumps of 2 bytes. To move from row-to-row, one needs to jump 6 bytes at a time (``2 * 4``). ctypes : ctypes object Class containing properties of the array needed for interaction with ctypes. base : ndarray If the array is a view on another array, that array is its `base` (unless that array is also a view). The `base` array is where the array data is ultimately stored. Parameters ---------- shape : tuple of ints Shape of created array. dtype : data type, optional Any object that can be interpreted a numpy data type. buffer : object exposing buffer interface, optional Used to fill the array with data. offset : int, optional Offset of array data in buffer. strides : tuple of ints, optional Strides of data in memory. order : {'C', 'F'}, optional Row-major or column-major order. See Also -------- array : Construct an array. zeros : Create an array and fill its allocated memory with zeros. empty : Create an array, but leave its allocated memory unchanged. dtype : Create a data type. Notes ----- There are two modes of creating an array using __new__: 1. If `buffer` is None, then only `shape`, `dtype`, and `order` are used. 2. If `buffer` is an object exporting the buffer interface, then all keywords are interpreted. No __init__ method is needed because the array is fully initialized after the __new__ method. Examples -------- These examples illustrate the low-level `ndarray` constructor. Refer to the `See Also` section for easier ways of constructing an ndarray. First mode, `buffer` is None: >>> np.ndarray(shape=(2,2), dtype=float, order='F') array([[ -1.13698227e+002, 4.25087011e-303], [ 2.88528414e-306, 3.27025015e-309]]) Second mode: >>> np.ndarray((2,), buffer=np.array([1,2,3]), ... offset=np.int_().itemsize, ... dtype=int) # offset = 1*itemsize, i.e. skip first element array([2, 3])
  class number ( generic )
  class object_ ( generic )
  class object_ ( generic )
  class int16 ( signedinteger )
  class signedinteger ( integer )
  class float32 ( floating )
  class complex64 ( complexfloating )
Composed of two 32 bit floats
  class string_ ( str , character )
  class string_ ( str , character )
  class string_ ( str , character )
  class uint8 ( unsignedinteger )
  class ufunc ( object )
Functions that operate element by element on whole arrays. Unary ufuncs: ============= op(X, out=None) Apply op to X elementwise Parameters ---------- X : array-like out : array-like An array to store the output. Must be the same shape as X. Returns ------- r : array-like r will have the same shape as X; if out is provided, r will be equal to out. Binary ufuncs: ============== op(X, Y, out=None) Apply op to X and Y elementwise. May "broadcast" to make the shapes of X and Y congruent. The broadcasting rules are: * Dimensions of length 1 may be prepended to either array * Arrays may be repeated along dimensions of length 1 Parameters ---------- X : array-like Y : array-like out : array-like An array to store the output. Must be the same shape as the output would have. Returns ------- r : array-like The return value; if out is provided, r will be equal to out.
  class uint64 ( unsignedinteger )
  class uint64 ( unsignedinteger )
  class uint16 ( unsignedinteger )
  class uint32 ( unsignedinteger )
  class uint64 ( unsignedinteger )
  class uint8 ( unsignedinteger )
  class uint32 ( unsignedinteger )
  class uint64 ( unsignedinteger )
  class uint64 ( unsignedinteger )
  class unicode_ ( unicode , character )
  class unicode_ ( unicode , character )
  class unsignedinteger ( integer )
  class uint16 ( unsignedinteger )
  class void ( flexible )
  class void ( flexible )
Functions
add_newdoc (place, obj, doc)
Adds documentation to obj which is in module place. If doc is a string add it to obj as a docstring If doc is a tuple, then the first element is interpreted as an attribute of obj and the second as the docstring (method, docstring) If doc is a list, then each element of the list should be a sequence of length two --> [(method1, docstring1), (method2, docstring2), ...] This routine never raises an error.
alen (a)
Return the length of an array_like as an array of at least 1 dimension. Parameters ---------- a : array_like Input array. Returns ------- alen : int Length of the first dimension of `a`. Examples -------- >>> z = np.zeros((7,4,5)) >>> z.shape[0] 7 >>> np.alen(z) 7
all (a, axis=None, out=None)
Test whether all elements of an array evaluate to true along a given axis. Parameters ---------- a : array_like Input array. axis : int, optional Axis over which to perform the operation. If None, use a flattened input array and return a bool. out : ndarray, optional Array into which the result is placed. Its type is preserved and it must be of the right shape to hold the output. Returns ------- out : ndarray A logical AND is performed along `axis`, and the result placed in `out`. If `out` was not specified, a new output array is created. See Also -------- ndarray.all : equivalent method Notes ----- Since NaN is not equal to zero, NaN evaluates to True. Examples -------- >>> np.all([[True,False],[True,True]]) False >>> np.all([[True,False],[True,True]], axis=0) array([ True, False], dtype=bool) >>> np.all([-1, 4, 5]) True >>> np.all([1.0, np.nan]) True
allclose (a, b, rtol=1.0000000000000001e-05, atol=1e-08)
Returns True if all elements are equal subject to given tolerances. The tolerance values are positive, typically very small numbers. The relative difference (`rtol` * `b`) and the absolute difference (`atol`) are added together to compare against the absolute difference between `a` and `b`. Parameters ---------- a, b : array_like Input arrays to compare. rtol : Relative tolerance The relative difference is equal to `rtol` * `b`. atol : Absolute tolerance The absolute difference is equal to `atol`. See Also -------- all, any, alltrue, sometrue Examples -------- >>> allclose(array([1e10,1e-7]), array([1.00001e10,1e-8])) False >>> allclose(array([1e10,1e-8]), array([1.00001e10,1e-9])) True >>> allclose(array([1e10,1e-8]), array([1.0001e10,1e-9])) False
alltrue (a, axis=None, out=None)
Check if all of the elements of `a` are true. Please refer to the `numpy.all` documentation. `numpy.all` is the same function. See Also -------- numpy.all : equivalent function
alterdot ()
Change `dot`, `vdot`, and `innerproduct` to use accelerated BLAS functions. When numpy is built with an accelerated BLAS like ATLAS, the above functions will be replaced to make use of the faster implementations. The faster implementations only affect float32, float64, complex64, and complex128 arrays. Furthermore, only matrix-matrix, matrix-vector, and vector-vector products are accelerated. Products of arrays with larger dimensionalities will not be accelerated since the BLAS API only includes these. Typically, the user will never have to call this function. If numpy was built with an accelerated BLAS, this function will be called when numpy is imported. See Also -------- restoredot : `restoredot` undoes the effects of `alterdot`.
amax (a, axis=None, out=None)
Return the maximum along a given axis. Parameters ---------- a : array_like Input data. axis : int, optional Axis along which to operate. By default flattened input is used. out : ndarray, optional Alternative output array in which to place the result. Must be of the same shape and buffer length as the expected output. Returns ------- amax : {ndarray, scalar} A new array or a scalar with the result, or a reference to `out` if it was specified. Examples -------- >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]]) >>> np.amax(x,0) array([2, 3]) >>> np.amax(x,1) array([1, 3])
amin (a, axis=None, out=None)
Return the minimum along a given axis. Parameters ---------- a : array_like Input data. axis : int, optional Axis along which to operate. By default a flattened input is used. out : ndarray, optional Alternative output array in which to place the result. Must be of the same shape and buffer length as the expected output. Returns ------- amin : {ndarray, scalar} A new array or a scalar with the result, or a reference to `out` if it was specified. Examples -------- >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]]) >>> np.amin(x,0) array([0, 1]) >>> np.amin(x,1) array([0, 2])
angle (z, deg=0)
Return the angle of the complex argument. Parameters ---------- z : array_like A complex number or sequence of complex numbers. deg : bool, optional Return angle in degrees if True, radians if False. Default is False. Returns ------- angle : {ndarray, scalar} The angle is defined as counterclockwise from the positive real axis on the complex plane, with dtype as numpy.float64. Examples -------- >>> np.angle([1.0, 1.0j, 1+1j]) # in radians array([ 0. , 1.57079633, 0.78539816]) >>> np.angle(1+1j, deg=True) # in degrees 45.0
any (a, axis=None, out=None)
Test whether any elements of an array evaluate to true along a given axis. Parameters ---------- a : array_like Input array. axis : int, optional Axis over which to perform the operation. If None, use a flattened input array and return a bool. out : ndarray, optional Array into which the result is placed. Its type is preserved and it must be of the right shape to hold the output. Returns ------- out : ndarray A logical OR is performed along `axis`, and the result placed in `out`. If `out` was not specified, a new output array is created. See Also -------- ndarray.any : equivalent method Notes ----- Since NaN is not equal to zero, NaN evaluates to True. Examples -------- >>> np.any([[True, False], [True, True]]) True >>> np.any([[True, False], [False, False]], axis=0) array([ True, False], dtype=bool) >>> np.any([-1, 0, 5]) True >>> np.any(np.nan) True
append (arr, values, axis=None)
Append values to the end of an array. Parameters ---------- arr : array_like Values are appended to a copy of this array. values : array_like These values are appended to a copy of `arr`. It must be of the correct shape (the same shape as `arr`, excluding `axis`). If `axis` is not specified, `values` can be any shape and will be flattened before use. axis : int, optional The axis along which `values` are appended. If `axis` is not given, both `arr` and `values` are flattened before use. Returns ------- out : ndarray A copy of `arr` with `values` appended to `axis`. Note that `append` does not occur in-place: a new array is allocated and filled. Examples -------- >>> np.append([1, 2, 3], [[4, 5, 6], [7, 8, 9]]) array([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.append([[1, 2, 3], [4, 5, 6]], [[7, 8, 9]], axis=0) array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
apply_along_axis (func1d, axis, arr, *args)
Apply function to 1-D slices along the given axis. Execute `func1d(arr[i],*args)` where `func1d` takes 1-D arrays, `arr` is the input array, and `i` is an integer that varies in order to apply the function along the given axis for each 1-D subarray in `arr`. Parameters ---------- func1d : function This function should be able to take 1-D arrays. It is applied to 1-D slices of `arr` along the specified axis. axis : integer Axis along which `func1d` is applied. arr : ndarray Input array. args : any Additional arguments to `func1d`. Returns ------- outarr : ndarray The output array. The shape of `outarr` depends on the return value of `func1d`. If it returns arrays with the same shape as the input arrays it receives, `outarr` has the same shape as `arr`. See Also -------- apply_over_axes : Apply a function repeatedly over multiple axes. Examples -------- >>> def my_func(a): ... """Average first and last element of a 1-D array""" ... return (a[0] + a[-1]) * 0.5 >>> b = np.array([[1,2,3], [4,5,6], [7,8,9]]) >>> np.apply_along_axis(my_func, 0, b) array([4., 5., 6.]) >>> np.apply_along_axis(my_func, 1, b) array([2., 5., 8.])
apply_over_axes (func, a, axes)
Apply a function repeatedly over multiple axes. `func` is called as `res = func(a, axis)`, with `axis` the first element of `axes`. The result `res` of the function call has to have the same or one less dimension(s) as `a`. If `res` has one less dimension than `a`, a dimension is then inserted before `axis`. The call to `func` is then repeated for each axis in `axes`, with `res` as the first argument. Parameters ---------- func : function This function should take two arguments, `func(a, axis)`. arr : ndarray Input array. axes : array_like Axes over which `func` has to be applied, the elements should be integers. Returns ------- val : ndarray The output array. The number of dimensions is the same as `a`, the shape can be different, this depends on whether `func` changes the shape of its output with respect to its input. See Also -------- apply_along_axis : Apply a function to 1-D slices of an array along the given axis. Examples -------- >>> a = np.arange(24).reshape(2,3,4) >>> a array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], <BLANKLINE> [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) Sum over axes 0 and 2. The result has same number of dimensions as the original array: >>> np.apply_over_axes(np.sum, a, [0,2]) array([[[ 60], [ 92], [124]]])
argmax (a, axis=None)
Indices of the maximum values along a given axis. Parameters ---------- a : array_like Input array. axis : int, optional By default, the index is into the flattened array, otherwise along the specified axis. Returns ------- index_array : ndarray of ints Array of indices into the array. It has the same shape `a`, except with `axis` removed. See Also -------- amax : The maximum along a given axis. unravel_index : Convert a flat index into an index tuple. Examples -------- >>> a = np.arange(6).reshape(2,3) >>> np.argmax(a) 5 >>> np.argmax(a, axis=0) array([1, 1, 1]) >>> np.argmax(a, axis=1) array([2, 2])
argmin (a, axis=None)
Return the indices of the minimum values along the given axis of `a`. Refer to `numpy.argmax` for detailed documentation.
argsort (a, axis=-1, kind='quicksort', order=None)
Returns the indices that would sort an array. Perform an indirect sort along the given axis using the algorithm specified by the `kind` keyword. It returns an array of indices of the same shape as `a` that index data along the given axis in sorted order. Parameters ---------- a : array_like Array to sort. axis : int, optional Axis along which to sort. If not given, the flattened array is used. kind : {'quicksort', 'mergesort', 'heapsort'}, optional Sorting algorithm. order : list, optional When `a` is an array with fields defined, this argument specifies which fields to compare first, second, etc. Not all fields need be specified. Returns ------- index_array : ndarray of ints Array of indices that sort `a` along the specified axis. In other words, ``a[index_array]`` yields a sorted `a`. See Also -------- sort : Describes sorting algorithms used. lexsort : Indirect stable sort with multiple keys. ndarray.sort : Inplace sort. Notes ----- See `sort` for notes on the different sorting algorithms. Examples -------- One dimensional array: >>> x = np.array([3, 1, 2]) >>> np.argsort(x) array([1, 2, 0]) Two-dimensional array: >>> x = np.array([[0, 3], [2, 2]]) >>> x array([[0, 3], [2, 2]]) >>> np.argsort(x, axis=0) array([[0, 1], [1, 0]]) >>> np.argsort(x, axis=1) array([[0, 1], [0, 1]]) Sorting with keys: >>> x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) >>> x array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) >>> np.argsort(x, order=('x','y')) array([1, 0]) >>> np.argsort(x, order=('y','x')) array([0, 1])
argwhere (a)
Return a 2-d array of shape N x a.ndim where each row is a sequence of indices into a. This sequence must be converted to a tuple in order to be used to index into a. >>> np.argwhere(np.ones((2, 2))) array([[0, 0], [0, 1], [1, 0], [1, 1]])
around (a, decimals=0, out=None)
Evenly round to the given number of decimals. Parameters ---------- a : array_like Input data. decimals : int, optional Number of decimal places to round to (default: 0). If decimals is negative, it specifies the number of positions to the left of the decimal point. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape as the expected output, but the type of the output values will be cast if necessary. Returns ------- rounded_array : {array} An array of the same type as `a`, containing the rounded values. Unless `a` was specified, a new array is created. A reference to the result is returned. The real and imaginary parts of complex numbers are rounded separately. The result of rounding a float is a float. See Also -------- ndarray.round : equivalent method Notes ----- For values exactly halfway between rounded decimal values, Numpy rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0, -0.5 and 0.5 round to 0.0, etc. Results may also be surprising due to the inexact representation of decimal fractions in the IEEE floating point standard [1]_ and errors introduced when scaling by powers of ten. References ---------- .. [1] "Lecture Notes on the Status of IEEE 754", William Kahan, http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF .. [2] "How Futile are Mindless Assessments of Roundoff in Floating-Point Computation?", William Kahan, http://www.cs.berkeley.edu/~wkahan/Mindless.pdf Examples -------- >>> np.around([.5, 1.5, 2.5, 3.5, 4.5]) array([ 0., 2., 2., 4., 4.]) >>> np.around([1,2,3,11], decimals=1) array([ 1, 2, 3, 11]) >>> np.around([1,2,3,11], decimals=-1) array([ 0, 0, 0, 10])
array2string (a, max_line_width=None, precision=None, suppress_small=None, separator=' ', prefix='', style=)
Return a string representation of an array. Parameters ---------- a : ndarray Input array. max_line_width : int, optional The maximum number of columns the string should span. Newline characters splits the string appropriately after array elements. precision : int, optional Floating point precision. suppress_small : bool, optional Represent very small numbers as zero. separator : string, optional Inserted between elements. prefix : string, optional An array is typically printed as:: 'prefix(' + array2string(a) + ')' The length of the prefix string is used to align the output correctly. style : function, optional Callable. See Also -------- array_str, array_repr Examples -------- >>> x = np.array([1e-16,1,2,3]) >>> print np.array2string(x, precision=2, separator=',', ... suppress_small=True) [ 0., 1., 2., 3.]
array_equal (a1, a2)
True if two arrays have the same shape and elements, False otherwise. Parameters ---------- a1 : array-like First input array. a2 : array-like Second input array. Returns ------- b : {True, False} Returns True if the arrays are equal. Examples -------- >>> np.array_equal([1,2],[1,2]) True >>> np.array_equal(np.array([1,2]),np.array([1,2])) True >>> np.array_equal([1,2],[1,2,3]) False >>> np.array_equal([1,2],[1,4]) False
array_equiv (a1, a2)
Returns True if a1 and a2 are shape consistent (mutually broadcastable) and have all elements equal and False otherwise.
array_repr (arr, max_line_width=None, precision=None, suppress_small=None)
Return the string representation of an array. Parameters ---------- arr : ndarray Input array. max_line_width : int The maximum number of columns the string should span. Newline characters splits the string appropriately after array elements. precision : int Floating point precision. suppress_small : bool Represent very small numbers as zero. Returns ------- string : str The string representation of an array. Examples -------- >>> np.array_repr(np.array([1,2])) 'array([1, 2])' >>> np.array_repr(np.ma.array([0.])) 'MaskedArray([ 0.])' >>> np.array_repr(np.array([], np.int32)) 'array([], dtype=int32)'
array_split (ary, indices_or_sections, axis=0)
Split an array into multiple sub-arrays of equal or near-equal size. Please refer to the `numpy.split` documentation. The only difference between these functions is that `array_split` allows `indices_or_sections` to be an integer that does *not* equally divide the axis. See Also -------- numpy.split : Split array into multiple sub-arrays. Examples -------- >>> x = np.arange(8.0) >>> np.array_split(x, 3) [array([ 0., 1., 2.]), array([ 3., 4., 5.]), array([ 6., 7.])]
array_str (a, max_line_width=None, precision=None, suppress_small=None)
Return a string representation of an array. Parameters ---------- a : ndarray Input array. max_line_width : int, optional Inserts newlines if text is longer than `max_line_width`. precision : int, optional If `a` is float, `precision` sets loating point precision. suppress_small : boolean, optional Represent very small numbers as zero. See Also -------- array2string, array_repr Examples -------- >>> np.array_str(np.arange(3)) >>> '[0 1 2]'
asanyarray (a, dtype=None, order=None)
Convert the input to a ndarray, but pass ndarray subclasses through. Parameters ---------- a : array_like Input data, in any form that can be converted to an array. This includes scalars, lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays. dtype : data-type, optional By default, the data-type is inferred from the input data. order : {'C', 'F'}, optional Whether to use row-major ('C') or column-major ('F') memory representation. Defaults to 'C'. Returns ------- out : ndarray or an ndarray subclass Array interpretation of `a`. If `a` is an ndarray or a subclass of ndarray, it is returned as-is and no copy is performed. See Also -------- asarray : Similar function which always returns ndarrays. ascontiguousarray : Convert input to a contiguous array. asfarray : Convert input to a floating point ndarray. asfortranarray : Convert input to an ndarray with column-major memory order. asarray_chkfinite : Similar function which checks input for NaNs and Infs. fromiter : Create an array from an iterator. fromfunction : Construct an array by executing a function on grid positions. Examples -------- Convert a list into an array: >>> a = [1, 2] >>> np.asanyarray(a) array([1, 2]) Instances of `ndarray` subclasses are passed through as-is: >>> a = np.matrix([1, 2]) >>> np.asanyarray(a) is a True
asarray (a, dtype=None, order=None)
Convert the input to an array. Parameters ---------- a : array_like Input data, in any form that can be converted to an array. This includes lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays. dtype : data-type, optional By default, the data-type is inferred from the input data. order : {'C', 'F'}, optional Whether to use row-major ('C') or column-major ('FORTRAN') memory representation. Defaults to 'C'. Returns ------- out : ndarray Array interpretation of `a`. No copy is performed if the input is already an ndarray. If `a` is a subclass of ndarray, a base class ndarray is returned. See Also -------- asanyarray : Similar function which passes through subclasses. ascontiguousarray : Convert input to a contiguous array. asfarray : Convert input to a floating point ndarray. asfortranarray : Convert input to an ndarray with column-major memory order. asarray_chkfinite : Similar function which checks input for NaNs and Infs. fromiter : Create an array from an iterator. fromfunction : Construct an array by executing a function on grid positions. Examples -------- Convert a list into an array: >>> a = [1, 2] >>> np.asarray(a) array([1, 2]) Existing arrays are not copied: >>> a = np.array([1, 2]) >>> np.asarray(a) is a True
asarray_chkfinite (a)
Like asarray, but check that no NaNs or Infs are present.
ascontiguousarray (a, dtype=None)
Return a contiguous array in memory (C order). Parameters ---------- a : array_like Input array. dtype : string Type code of returned array. Returns ------- out : ndarray Contiguous array of same shape and content as `a` with type `dtype`.
asfarray (a, dtype=)
asfarray(a,dtype=None) returns a as a float array.
asfortranarray (a, dtype=None)
Return an array laid out in Fortran-order in memory. Parameters ---------- a : array-like Input array. dtype : data-type, optional By default, the data-type is inferred from the input data. Returns ------- out : ndarray Array interpretation of `a` in Fortran (column-order). See Also -------- asarray : Similar function which always returns ndarrays. ascontiguousarray : Convert input to a contiguous array. asfarray : Convert input to a floating point ndarray. asanyarray : Convert input to an ndarray with either row or column-major memory order. asarray_chkfinite : Similar function which checks input for NaNs and Infs. fromiter : Create an array from an iterator. fromfunction : Construct an array by executing a function on grid positions.
asmatrix (data, dtype=None)
Interpret the input as a matrix. Unlike `matrix`, `asmatrix` does not make a copy if the input is already a matrix or an ndarray. Equivalent to ``matrix(data, copy=False)``. Parameters ---------- data : array_like Input data. Returns ------- mat : matrix `data` interpreted as a matrix. Examples -------- >>> x = np.array([[1, 2], [3, 4]]) >>> m = np.asmatrix(x) >>> x[0,0] = 5 >>> m matrix([[5, 2], [3, 4]])
asscalar (a)
Convert an array of size 1 to its scalar equivalent.
atleast_1d (*arys)
Convert inputs to arrays with at least one dimension. Scalar inputs are converted to 1-dimensional arrays, whilst higher-dimensional inputs are preserved. Parameters ---------- array1, array2, ... : array_like One or more input arrays. Returns ------- ret : ndarray An array, or sequence of arrays, each with ``a.ndim >= 1``. Copies are made only if necessary. See Also -------- atleast_2d, atleast_3d Examples -------- >>> np.atleast_1d(1.0) array([ 1.]) >>> x = np.arange(9.0).reshape(3,3) >>> np.atleast_1d(x) array([[ 0., 1., 2.], [ 3., 4., 5.], [ 6., 7., 8.]]) >>> np.atleast_1d(x) is x True >>> np.atleast_1d(1, [3, 4]) [array([1]), array([3, 4])]
atleast_2d (*arys)
View inputs as arrays with at least two dimensions. Parameters ---------- array1, array2, ... : array_like One or more array-like sequences. Non-array inputs are converted to arrays. Arrays that already have two or more dimensions are preserved. Returns ------- res, res2, ... : ndarray An array, or tuple of arrays, each with ``a.ndim >= 2``. Copies are avoided where possible, and views with two or more dimensions are returned. See Also -------- atleast_1d, atleast_3d Examples -------- >>> numpy.atleast_2d(3.0) array([[ 3.]]) >>> x = numpy.arange(3.0) >>> numpy.atleast_2d(x) array([[ 0., 1., 2.]]) >>> numpy.atleast_2d(x).base is x True >>> np.atleast_2d(1, [1, 2], [[1, 2]]) [array([[1]]), array([[1, 2]]), array([[1, 2]])]
atleast_3d (*arys)
View inputs as arrays with at least three dimensions. Parameters ---------- array1, array2, ... : array_like One or more array-like sequences. Non-array inputs are converted to arrays. Arrays that already have three or more dimensions are preserved. Returns ------- res1, res2, ... : ndarray An array, or tuple of arrays, each with ``a.ndim >= 3``. Copies are avoided where possible, and views with three or more dimensions are returned. For example, a one-dimensional array of shape ``N`` becomes a view of shape ``(1, N, 1)``. An ``(M, N)`` array becomes a view of shape ``(N, M, 1)``. See Also -------- numpy.atleast_1d, numpy.atleast_2d Examples -------- >>> numpy.atleast_3d(3.0) array([[[ 3.]]]) >>> x = numpy.arange(3.0) >>> numpy.atleast_3d(x).shape (1, 3, 1) >>> x = numpy.arange(12.0).reshape(4,3) >>> numpy.atleast_3d(x).shape (4, 3, 1) >>> numpy.atleast_3d(x).base is x True >>> for arr in np.atleast_3d(1, [1, 2], [[1, 2]]): print arr, "\n" ... [[[1]]] [[[1] [2]]] [[[1] [2]]]
average (a, axis=None, weights=None, returned=False)
Return the weighted average of array over the specified axis. Parameters ---------- a : array_like Data to be averaged. axis : {None, integer}, optional Axis along which to average `a`. If `None`, averaging is done over the entire array irrespective of its shape. weights : {None, array_like}, optional The importance that each datum has in the computation of the average. The weights array can either be 1D (in which case its length must be the size of `a` along the given axis) or of the same shape as `a`. If `weights=None`, then all data in `a` are assumed to have a weight equal to one. returned : {False, boolean}, optional If `True`, the tuple (`average`, `sum_of_weights`) is returned, otherwise only the average is returned. Note that if `weights=None`, `sum_of_weights` is equivalent to the number of elements over which the average is taken. Returns ------- average, [sum_of_weights] : {array_type, double} Return the average along the specified axis. When returned is `True`, return a tuple with the average as the first element and the sum of the weights as the second element. The return type is `Float` if `a` is of integer type, otherwise it is of the same type as `a`. `sum_of_weights` is of the same type as `average`. Raises ------ ZeroDivisionError When all weights along axis are zero. See `numpy.ma.average` for a version robust to this type of error. TypeError When the length of 1D `weights` is not the same as the shape of `a` along axis. See Also -------- ma.average : average for masked arrays Examples -------- >>> data = range(1,5) >>> data [1, 2, 3, 4] >>> np.average(data) 2.5 >>> np.average(range(1,11), weights=range(10,0,-1)) 4.0
bartlett (M)
Return the Bartlett window. The Bartlett window is very similar to a triangular window, except that the end points are at zero. It is often used in signal processing for tapering a signal, without generating too much ripple in the frequency domain. Parameters ---------- M : int Number of points in the output window. If zero or less, an empty array is returned. Returns ------- out : array The triangular window, normalized to one (the value one appears only if the number of samples is odd), with the first and last samples equal to zero. See Also -------- blackman, hamming, hanning, kaiser Notes ----- The Bartlett window is defined as .. math:: w(n) = \frac{2}{M-1} \left( \frac{M-1}{2} - \left|n - \frac{M-1}{2}\right| \right) Most references to the Bartlett window come from the signal processing literature, where it is used as one of many windowing functions for smoothing values. Note that convolution with this window produces linear interpolation. It is also known as an apodization (which means"removing the foot", i.e. smoothing discontinuities at the beginning and end of the sampled signal) or tapering function. The fourier transform of the Bartlett is the product of two sinc functions. Note the excellent discussion in Kanasewich. References ---------- .. [1] M.S. Bartlett, "Periodogram Analysis and Continuous Spectra", Biometrika 37, 1-16, 1950. .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The University of Alberta Press, 1975, pp. 109-110. .. [3] A.V. Oppenheim and R.W. Schafer, "Discrete-Time Signal Processing", Prentice-Hall, 1999, pp. 468-471. .. [4] Wikipedia, "Window function", http://en.wikipedia.org/wiki/Window_function .. [5] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling, "Numerical Recipes", Cambridge University Press, 1986, page 429. Examples -------- >>> np.bartlett(12) array([ 0. , 0.18181818, 0.36363636, 0.54545455, 0.72727273, 0.90909091, 0.90909091, 0.72727273, 0.54545455, 0.36363636, 0.18181818, 0. ]) Plot the window and its frequency response (requires SciPy and matplotlib): >>> from numpy import clip, log10, array, bartlett >>> from numpy.fft import fft >>> import matplotlib.pyplot as plt >>> window = bartlett(51) >>> plt.plot(window) >>> plt.title("Bartlett window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample") >>> plt.show() >>> A = fft(window, 2048) / 25.5 >>> mag = abs(fftshift(A)) >>> freq = linspace(-0.5,0.5,len(A)) >>> response = 20*log10(mag) >>> response = clip(response,-100,100) >>> plt.plot(freq, response) >>> plt.title("Frequency response of Bartlett window") >>> plt.ylabel("Magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]") >>> plt.axis('tight'); plt.show()
base_repr (number, base=2, padding=0)
Return a string representation of a number in the given base system. Parameters ---------- number : scalar The value to convert. Only positive values are handled. base : int Convert `number` to the `base` number system. The valid range is 2-36, the default value is 2. padding : int, optional Number of zeros padded on the left. Returns ------- out : str String representation of `number` in `base` system. See Also -------- binary_repr : Faster version of `base_repr` for base 2 that also handles negative numbers. Examples -------- >>> np.base_repr(3, 5) '3' >>> np.base_repr(6, 5) '11' >>> np.base_repr(7, 5, padding=3) '00012'
binary_repr (num, width=None)
Return the binary representation of the input number as a string. For negative numbers, if width is not given, a minus sign is added to the front. If width is given, the two's complement of the number is returned, with respect to that width. In a two's-complement system negative numbers are represented by the two's complement of the absolute value. This is the most common method of representing signed integers on computers [1]_. A N-bit two's-complement system can represent every integer in the range :math:`-2^{N-1}` to :math:`+2^{N-1}-1`. Parameters ---------- num : int Only an integer decimal number can be used. width : int, optional The length of the returned string if `num` is positive, the length of the two's complement if `num` is negative. Returns ------- bin : str Binary representation of `num` or two's complement of `num`. See Also -------- base_repr Notes ----- `binary_repr` is equivalent to using `base_repr` with base 2, but about 25x faster. References ---------- .. [1] Wikipedia, "Two's complement", http://en.wikipedia.org/wiki/Two's_complement Examples -------- >>> np.binary_repr(3) '11' >>> np.binary_repr(-3) '-11' >>> np.binary_repr(3, width=4) '0011' The two's complement is returned when the input number is negative and width is specified: >>> np.binary_repr(-3, width=4) '1101'
blackman (M)
Return the Blackman window. The Blackman window is a taper formed by using the the first three terms of a summation of cosines. It was designed to have close to the minimal leakage possible. It is close to optimal, only slightly worse than a Kaiser window. Parameters ---------- M : int Number of points in the output window. If zero or less, an empty array is returned. Returns ------- out : array The window, normalized to one (the value one appears only if the number of samples is odd). See Also -------- bartlett, hamming, hanning, kaiser Notes ----- The Blackman window is defined as .. math:: w(n) = 0.42 - 0.5 \cos(2\pi n/M) + 0.08 \cos(4\pi n/M) Most references to the Blackman window come from the signal processing literature, where it is used as one of many windowing functions for smoothing values. It is also known as an apodization (which means "removing the foot", i.e. smoothing discontinuities at the beginning and end of the sampled signal) or tapering function. It is known as a "near optimal" tapering function, almost as good (by some measures) as the kaiser window. References ---------- .. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra, Dover Publications, New York. .. [2] Wikipedia, "Window function", http://en.wikipedia.org/wiki/Window_function .. [3] Oppenheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999, pp. 468-471. Examples -------- >>> from numpy import blackman >>> blackman(12) array([ -1.38777878e-17, 3.26064346e-02, 1.59903635e-01, 4.14397981e-01, 7.36045180e-01, 9.67046769e-01, 9.67046769e-01, 7.36045180e-01, 4.14397981e-01, 1.59903635e-01, 3.26064346e-02, -1.38777878e-17]) Plot the window and the frequency response: >>> from numpy import clip, log10, array, bartlett >>> from scipy.fftpack import fft, fftshift >>> import matplotlib.pyplot as plt >>> window = blackman(51) >>> plt.plot(window) >>> plt.title("Blackman window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample") >>> plt.show() >>> A = fft(window, 2048) / 25.5 >>> mag = abs(fftshift(A)) >>> freq = linspace(-0.5,0.5,len(A)) >>> response = 20*log10(mag) >>> response = clip(response,-100,100) >>> plt.plot(freq, response) >>> plt.title("Frequency response of Bartlett window") >>> plt.ylabel("Magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]") >>> plt.axis('tight'); plt.show()
bmat (obj, ldict=None, gdict=None)
Build a matrix object from a string, nested sequence, or array. Parameters ---------- obj : string, sequence or array Input data. Variables names in the current scope may be referenced, even if `obj` is a string. See Also -------- matrix Examples -------- >>> A = np.mat('1 1; 1 1') >>> B = np.mat('2 2; 2 2') >>> C = np.mat('3 4; 5 6') >>> D = np.mat('7 8; 9 0') All the following expressions construct the same block matrix: >>> np.bmat([[A, B], [C, D]]) matrix([[1, 1, 2, 2], [1, 1, 2, 2], [3, 4, 7, 8], [5, 6, 9, 0]]) >>> np.bmat(np.r_[np.c_[A, B], np.c_[C, D]]) matrix([[1, 1, 2, 2], [1, 1, 2, 2], [3, 4, 7, 8], [5, 6, 9, 0]]) >>> np.bmat('A,B; C,D') matrix([[1, 1, 2, 2], [1, 1, 2, 2], [3, 4, 7, 8], [5, 6, 9, 0]])
broadcast_arrays (*args)
Broadcast any number of arrays against each other. Parameters ---------- `*args` : arrays The arrays to broadcast. Returns ------- broadcasted : list of arrays These arrays are views on the original arrays. They are typically not contiguous. Furthermore, more than one element of a broadcasted array may refer to a single memory location. If you need to write to the arrays, make copies first. Examples -------- >>> x = np.array([[1,2,3]]) >>> y = np.array([[1],[2],[3]]) >>> np.broadcast_arrays(x, y) [array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]), array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])] Here is a useful idiom for getting contiguous copies instead of non-contiguous views. >>> map(np.array, np.broadcast_arrays(x, y)) [array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]), array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])]
byte_bounds (a)
(low, high) are pointers to the end-points of an array low is the first byte high is just *past* the last byte If the array is not single-segment, then it may not actually use every byte between these bounds. The array provided must conform to the Python-side of the array interface
choose (a, choices, out=None, mode='raise')
Use an index array to construct a new array from a set of choices. Given an array of integers and a set of n choice arrays, this function will create a new array that merges each of the choice arrays. Where a value in `a` is i, then the new array will have the value that choices[i] contains in the same place. Parameters ---------- a : int array This array must contain integers in [0, n-1], where n is the number of choices. choices : sequence of arrays Choice arrays. The index array and all of the choices should be broadcastable to the same shape. out : array, optional If provided, the result will be inserted into this array. It should be of the appropriate shape and dtype mode : {'raise', 'wrap', 'clip'}, optional Specifies how out-of-bounds indices will behave: * 'raise' : raise an error * 'wrap' : wrap around * 'clip' : clip to the range Returns ------- merged_array : array The merged results. See Also -------- ndarray.choose : equivalent method Examples -------- >>> choices = [[0, 1, 2, 3], [10, 11, 12, 13], ... [20, 21, 22, 23], [30, 31, 32, 33]] >>> np.choose([2, 3, 1, 0], choices) array([20, 31, 12, 3]) >>> np.choose([2, 4, 1, 0], choices, mode='clip') array([20, 31, 12, 3]) >>> np.choose([2, 4, 1, 0], choices, mode='wrap') array([20, 1, 12, 3])
clip (a, a_min, a_max, out=None)
Clip (limit) the values in an array. Given an interval, values outside the interval are clipped to the interval edges. For example, if an interval of ``[0, 1]`` is specified, values smaller than 0 become 0, and values larger than 1 become 1. Parameters ---------- a : array_like Array containing elements to clip. a_min : scalar or array_like Minimum value. a_max : scalar or array_like Maximum value. If `a_min` or `a_max` are array_like, then they will be broadcasted to the shape of `a`. out : ndarray, optional The results will be placed in this array. It may be the input array for in-place clipping. `out` must be of the right shape to hold the output. Its type is preserved. Returns ------- clipped_array : ndarray An array with the elements of `a`, but where values < `a_min` are replaced with `a_min`, and those > `a_max` with `a_max`. Examples -------- >>> a = np.arange(10) >>> np.clip(a, 1, 8) array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8]) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.clip(a, 3, 6, out=a) array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6]) >>> a array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6]) >>> np.clip(a, [3,4,1,1,1,4,4,4,4,4], 8) array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])
column_stack (tup)
Stack 1-D arrays as columns into a 2-D array Take a sequence of 1-D arrays and stack them as columns to make a single 2-D array. 2-D arrays are stacked as-is, just like with hstack. 1-D arrays are turned into 2-D columns first. Parameters ---------- tup : sequence of 1-D or 2-D arrays. Arrays to stack. All of them must have the same first dimension. Examples -------- >>> a = np.array((1,2,3)) >>> b = np.array((2,3,4)) >>> np.column_stack((a,b)) array([[1, 2], [2, 3], [3, 4]])
common_type (*arrays)
Return the inexact scalar type which is most common in a list of arrays. The return type will always be a inexact scalar type, even if all the arrays are integer arrays Parameters ---------- arrays: sequence of array_like Input sequence of arrays. Returns ------- out: data type code Data type code.
compress (condition, a, axis=None, out=None)
Return selected slices of an array along given axis. Parameters ---------- condition : {array} Boolean 1-d array selecting which entries to return. If len(condition) is less than the size of a along the axis, then output is truncated to length of condition array. a : {array_type} Array from which to extract a part. axis : {None, integer} Axis along which to take slices. If None, work on the flattened array. out : array, optional Output array. Its type is preserved and it must be of the right shape to hold the output. Returns ------- compressed_array : array A copy of `a` without the slices along axis for which `condition` is false. Examples -------- >>> a = np.array([[1, 2], [3, 4]]) >>> np.compress([0, 1], a, axis=0) array([[3, 4]]) >>> np.compress([1], a, axis=1) array([[1], [3]]) >>> np.compress([0,1,1], a) array([2, 3])
convolve (a, v, mode='full')
Returns the discrete, linear convolution of two one-dimensional sequences. The convolution operator is often seen in signal processing, where it models the effect of a linear time-invariant system on a signal [1]_. In probability theory, the sum of two independent random variables is distributed according to the convolution of their individual distributions. Parameters ---------- a : (N,) array_like First one-dimensional input array. v : (M,) array_like Second one-dimensional input array. mode : {'full', 'valid', 'same'}, optional 'full': By default, mode is 'full'. This returns the convolution at each point of overlap, with an output shape of (N+M-1,). At the end-points of the convolution, the signals do not overlap completely, and boundary effects may be seen. 'same': Mode `same` returns output of length ``max(M, N)``. Boundary effects are still visible. 'valid': Mode `valid` returns output of length ``max(M, N) - min(M, N) + 1``. The convolution product is only given for points where the signals overlap completely. Values outside the signal boundary have no effect. Returns ------- out : ndarray Discrete, linear convolution of `a` and `v`. See Also -------- scipy.signal.fftconv : Convolve two arrays using the Fast Fourier Transform. scipy.linalg.toeplitz : Used to construct the convolution operator. Notes ----- The discrete convolution operation is defined as .. math:: (f * g)[n] = \sum_{m = -\infty}^{\infty} f[m] f[n - m] It can be shown that a convolution :math:`x(t) * y(t)` in time/space is equivalent to the multiplication :math:`X(f) Y(f)` in the Fourier domain, after appropriate padding (padding is necessary to prevent circular convolution). Since multiplication is more efficient (faster) than convolution, the function `scipy.signal.fftconvolve` exploits the FFT to calculate the convolution of large data-sets. References ---------- .. [1] Wikipedia, "Convolution", http://en.wikipedia.org/wiki/Convolution. Examples -------- Note how the convolution operator flips the second array before "sliding" the two across one another: >>> np.convolve([1, 2, 3], [0, 1, 0.5]) array([ 0. , 1. , 2.5, 4. , 1.5]) Only return the middle values of the convolution. Contains boundary effects, where zeros are taken into account: >>> np.convolve([1,2,3],[0,1,0.5], 'same') array([ 1. , 2.5, 4. ]) The two arrays are of the same length, so there is only one position where they completely overlap: >>> np.convolve([1,2,3],[0,1,0.5], 'valid') array([ 2.5])
copy (a)
Return an array copy of the given object. Parameters ---------- a : array_like Input data. Returns ------- arr : ndarray Array interpretation of `a`. Notes ----- This is equivalent to >>> np.array(a, copy=True) Examples -------- Create an array x, with a reference y and a copy z: >>> x = np.array([1, 2, 3]) >>> y = x >>> z = np.copy(x) Note that, when we modify x, y changes, but not z: >>> x[0] = 10 >>> x[0] == y[0] True >>> x[0] == z[0] False
corrcoef (x, y=None, rowvar=1, bias=0)
Correlation coefficients. Please refer to the documentation for `cov` for more detail. The relationship between the correlation coefficient matrix, P, and the covariance matrix, C, is .. math:: P_{ij} = \frac{ C_{ij} } { \sqrt{ C_{ii} * C_{jj} } } The values of P are between -1 and 1. See Also -------- cov : Covariance matrix
correlate (a, v, mode='valid')
Discrete, linear correlation of two 1-dimensional sequences. This function is equivalent to >>> np.convolve(a, v[::-1], mode=mode) where ``v[::-1]`` is the reverse of `v`. Parameters ---------- a, v : array_like Input sequences. mode : {'valid', 'same', 'full'}, optional Refer to the `convolve` docstring. Note that the default is `valid`, unlike `convolve`, which uses `full`. See Also -------- convolve : Discrete, linear convolution of two one-dimensional sequences.
cov (m, y=None, rowvar=1, bias=0)
Estimate a covariance matrix, given data. Covariance indicates the level to which two variables vary together. If we examine N-dimensional samples, :math:`X = [x_1, x_2, ... x_N]^T`, then the covariance matrix element :math:`C_{ij}` is the covariance of :math:`x_i` and :math:`x_j`. The element :math:`C_{ii}` is the variance of :math:`x_i`. Parameters ---------- m : array-like A 1D or 2D array containing multiple variables and observations. Each row of `m` represents a variable, and each column a single observation of all those variables. Also see `rowvar` below. y : array-like, optional An additional set of variables and observations. `y` has the same form as that of `m`. rowvar : int, optional If `rowvar` is non-zero (default), then each row represents a variable, with observations in the columns. Otherwise, the relationship is transposed: each column represents a variable, while the rows contain observations. bias : int, optional Default normalization is by ``(N-1)``, where ``N`` is the number of observations given (unbiased estimate). If `bias` is 1, then normalization is by ``N``. Returns ------- out : ndarray The covariance matrix of the variables. See Also -------- corrcoef : Normalized covariance matrix Examples -------- Consider two variables, :math:`x_0` and :math:`x_1`, which correlate perfectly, but in opposite directions: >>> x = np.array([[0, 2], [1, 1], [2, 0]]).T >>> x array([[0, 1, 2], [2, 1, 0]]) Note how :math:`x_0` increases while :math:`x_1` decreases. The covariance matrix shows this clearly: >>> np.cov(x) array([[ 1., -1.], [-1., 1.]]) Note that element :math:`C_{0,1}`, which shows the correlation between :math:`x_0` and :math:`x_1`, is negative. Further, note how `x` and `y` are combined: >>> x = [-2.1, -1, 4.3] >>> y = [3, 1.1, 0.12] >>> X = np.vstack((x,y)) >>> print np.cov(X) [[ 11.71 -4.286 ] [ -4.286 2.14413333]] >>> print np.cov(x, y) [[ 11.71 -4.286 ] [ -4.286 2.14413333]] >>> print np.cov(x) 11.71
cross (a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)
Return the cross product of two (arrays of) vectors. The cross product is performed over the last axis of a and b by default, and can handle axes with dimensions 2 and 3. For a dimension of 2, the z-component of the equivalent three-dimensional cross product is returned.
cumprod (a, axis=None, dtype=None, out=None)
Return the cumulative product of elements along a given axis. Parameters ---------- a : array-like Input array. axis : int, optional Axis along which the cumulative product is computed. By default the input is flattened. dtype : dtype, optional Type of the returned array, as well as of the accumulator in which the elements are multiplied. If dtype is not specified, it defaults to the dtype of `a`, unless `a` has an integer dtype with a precision less than that of the default platform integer. In that case, the default platform integer is used instead. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape and buffer length as the expected output but the type of the resulting values will be cast if necessary. Returns ------- cumprod : ndarray. A new array holding the result is returned unless `out` is specified, in which case a reference to out is returned. Notes ----- Arithmetic is modular when using integer types, and no error is raised on overflow. Examples -------- >>> a = np.array([1,2,3]) >>> np.cumprod(a) # intermediate results 1, 1*2 ... # total product 1*2*3 = 6 array([1, 2, 6]) >>> a = np.array([[1, 2, 3], [4, 5, 6]]) >>> np.cumprod(a, dtype=float) # specify type of output array([ 1., 2., 6., 24., 120., 720.]) The cumulative product for each column (i.e., over the rows of) `a`: >>> np.cumprod(a, axis=0) array([[ 1, 2, 3], [ 4, 10, 18]]) The cumulative product for each row (i.e. over the columns of) `a`: >>> np.cumprod(a,axis=1) array([[ 1, 2, 6], [ 4, 20, 120]])
cumproduct (a, axis=None, dtype=None, out=None)
Return the cumulative product over the given axis. See `cumprod` for full documentation. See Also -------- cumprod
cumsum (a, axis=None, dtype=None, out=None)
Return the cumulative sum of the elements along a given axis. Parameters ---------- a : array-like Input array or object that can be converted to an array. axis : int, optional Axis along which the cumulative sum is computed. The default (`axis` = `None`) is to compute the cumsum over the flattened array. `axis` may be negative, in which case it counts from the last to the first axis. dtype : dtype, optional Type of the returned array and of the accumulator in which the elements are summed. If `dtype` is not specified, it defaults to the dtype of `a`, unless `a` has an integer dtype with a precision less than that of the default platform integer. In that case, the default platform integer is used. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape and buffer length as the expected output but the type will be cast if necessary. Returns ------- cumsum : ndarray. A new array holding the result is returned unless `out` is specified, in which case a reference to `out` is returned. Notes ----- Arithmetic is modular when using integer types, and no error is raised on overflow. Examples -------- >>> a = np.array([[1,2,3],[4,5,6]]) >>> np.cumsum(a) array([ 1, 3, 6, 10, 15, 21]) >>> np.cumsum(a,dtype=float) # specifies type of output value(s) array([ 1., 3., 6., 10., 15., 21.]) >>> np.cumsum(a,axis=0) # sum over rows for each of the 3 columns array([[1, 2, 3], [5, 7, 9]]) >>> np.cumsum(a,axis=1) # sum over columns for each of the 2 rows array([[ 1, 3, 6], [ 4, 9, 15]])
delete (arr, obj, axis=None)
Return a new array with sub-arrays along an axis deleted. Parameters ---------- arr : array-like Input array. obj : slice, integer or an array of integers Indicate which sub-arrays to remove. axis : integer or None The axis along which to delete the subarray defined by `obj`. If `axis` is None, `obj` is applied to the flattened array. See Also -------- insert : Insert values into an array. append : Append values at the end of an array. Examples -------- >>> arr = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) >>> arr array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]]) >>> np.delete(arr, 1, 0) array([[ 1, 2, 3, 4], [ 9, 10, 11, 12]]) >>> np.delete(arr, np.s_[::2], 1) array([[ 2, 4], [ 6, 8], [10, 12]]) >>> np.delete(arr, [1,3,5], None) array([ 1, 3, 5, 7, 8, 9, 10, 11, 12])
deprecate (func, oldname=None, newname=None)
Deprecate old functions. Issues a DeprecationWarning, adds warning to oldname's docstring, rebinds oldname.__name__ and returns new function object. Example: oldfunc = deprecate(newfunc, 'oldfunc', 'newfunc')
deprecate_with_doc (somestr)
Decorator to deprecate functions and provide detailed documentation with 'somestr' that is added to the functions docstring. Example: depmsg = 'function scipy.foo has been merged into numpy.foobar' @deprecate_with_doc(depmsg) def foo(): pass
diag (v, k=0)
Extract a diagonal or construct a diagonal array. Parameters ---------- v : array_like If `v` is a 2-dimensional array, return a copy of its `k`-th diagonal. If `v` is a 1-dimensional array, return a 2-dimensional array with `v` on the `k`-th diagonal. k : int, optional Diagonal in question. The defaults is 0. Examples -------- >>> x = np.arange(9).reshape((3,3)) >>> x array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.diag(x) array([0, 4, 8]) >>> np.diag(np.diag(x)) array([[0, 0, 0], [0, 4, 0], [0, 0, 8]])
diagflat (v, k=0)
Create a 2-dimensional array with the flattened input as a diagonal. Parameters ---------- v : array_like Input data, which is flattened and set as the `k`-th diagonal of the output. k : int, optional Diagonal to set. The default is 0. Examples -------- >>> np.diagflat([[1,2],[3,4]]) array([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]]) >>> np.diagflat([1,2], 1) array([[0, 1, 0], [0, 0, 2], [0, 0, 0]])
diagonal (a, offset=0, axis1=0, axis2=1)
Return specified diagonals. If `a` is 2-D, returns the diagonal of self with the given offset, i.e., the collection of elements of the form `a[i,i+offset]`. If `a` has more than two dimensions, then the axes specified by `axis1` and `axis2` are used to determine the 2-D subarray whose diagonal is returned. The shape of the resulting array can be determined by removing `axis1` and `axis2` and appending an index to the right equal to the size of the resulting diagonals. Parameters ---------- a : array_like Array from which the diagonals are taken. offset : int, optional Offset of the diagonal from the main diagonal. Can be both positive and negative. Defaults to main diagonal (0). axis1 : int, optional Axis to be used as the first axis of the 2-D subarrays from which the diagonals should be taken. Defaults to first axis (0). axis2 : int, optional Axis to be used as the second axis of the 2-D subarrays from which the diagonals should be taken. Defaults to second axis (1). Returns ------- array_of_diagonals : ndarray If `a` is 2-D, a 1-D array containing the diagonal is returned. If `a` has larger dimensions, then an array of diagonals is returned. Raises ------ ValueError If the dimension of `a` is less than 2. See Also -------- diag : Matlab workalike for 1-D and 2-D arrays. diagflat : Create diagonal arrays. trace : Sum along diagonals. Examples -------- >>> a = np.arange(4).reshape(2,2) >>> a array([[0, 1], [2, 3]]) >>> a.diagonal() array([0, 3]) >>> a.diagonal(1) array([1]) >>> a = np.arange(8).reshape(2,2,2) >>> a array([[[0, 1], [2, 3]], <BLANKLINE> [[4, 5], [6, 7]]]) >>> a.diagonal(0,-2,-1) array([[0, 3], [4, 7]])
diff (a, n=1, axis=-1)
Calculate the nth order discrete difference along given axis. Parameters ---------- a : array_like Input array n : int, optional The number of times values are differenced. axis : int, optional The axis along which the difference is taken. Returns ------- out : ndarray The `n` order differences. The shape of the output is the same as `a` except along `axis` where the dimension is `n` less. Examples -------- >>> x = np.array([0,1,3,9,5,10]) >>> np.diff(x) array([ 1, 2, 6, -4, 5]) >>> np.diff(x,n=2) array([ 1, 4, -10, 9]) >>> x = np.array([[1,3,6,10],[0,5,6,8]]) >>> np.diff(x) array([[2, 3, 4], [5, 1, 2]]) >>> np.diff(x,axis=0) array([[-1, 2, 0, -2]])
disp (mesg, device=None, linefeed=True)
Display a message to the given device (default is sys.stdout) with or without a linefeed.
dsplit (ary, indices_or_sections)
Split array into multiple sub-arrays along the 3rd axis (depth). Parameters ---------- ary : ndarray An array, with at least 3 dimensions, to be divided into sub-arrays depth-wise, or along the third axis. indices_or_sections: integer or 1D array If `indices_or_sections` is an integer, N, the array will be divided into N equal arrays along `axis`. If an equal split is not possible, a ValueError is raised. if `indices_or_sections` is a 1D array of sorted integers representing indices along `axis`, the array will be divided such that each index marks the start of each sub-array. If an index exceeds the dimension of the array along `axis`, and empty sub-array is returned for that index. axis : integer, optional the axis along which to split. Default is 0. Returns ------- sub-arrays : list A list of sub-arrays. See Also -------- array_split : Split an array into a list of multiple sub-arrays of near-equal size. split : Split array into a list of multiple sub-arrays of equal size. hsplit : Split array into a list of multiple sub-arrays horizontally vsplit : Split array into a list of multiple sub-arrays vertically concatenate : Join arrays together. hstack : Stack arrays in sequence horizontally (column wise) vstack : Stack arrays in sequence vertically (row wise) dstack : Stack arrays in sequence depth wise (along third dimension) Notes ----- `dsplit` requires that sub-arrays are of equal shape, whereas `array_split` allows for sub-arrays to have nearly-equal shape. Equivalent to `split` with `axis` = 2. Examples -------- >>> x = np.arange(16.0).reshape(2, 2, 4) >>> np.dsplit(x, 2) <BLANKLINE> [array([[[ 0., 1.], [ 4., 5.]], <BLANKLINE> [[ 8., 9.], [ 12., 13.]]]), array([[[ 2., 3.], [ 6., 7.]], <BLANKLINE> [[ 10., 11.], [ 14., 15.]]])] <BLANKLINE> >>> x = np.arange(16.0).reshape(2, 2, 4) >>> np.dsplit(x, array([3, 6])) <BLANKLINE> [array([[[ 0., 1., 2.], [ 4., 5., 6.]], <BLANKLINE> [[ 8., 9., 10.], [ 12., 13., 14.]]]), array([[[ 3.], [ 7.]], <BLANKLINE> [[ 11.], [ 15.]]]), array([], dtype=float64)]
dstack (tup)
Stack arrays in sequence depth wise (along third dimension) Take a sequence of arrays and stack them along the third axis. This is a simple way to stack 2D arrays (images) into a single 3D array for processing. dstack will rebuild arrays divided by dsplit. Parameters ---------- tup : sequence of arrays Arrays to stack. All of them must have the same shape along all but the third axis. Examples -------- >>> a = np.array((1,2,3)) >>> b = np.array((2,3,4)) >>> np.dstack((a,b)) array([[[1, 2], [2, 3], [3, 4]]]) >>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], <BLANKLINE> [[2, 3]], <BLANKLINE> [[3, 4]]])
ediff1d (ary, to_end=None, to_begin=None)
The differences between consecutive elements of an array. Parameters ---------- ary : array This array will be flattened before the difference is taken. to_end : number, optional If provided, this number will be tacked onto the end of the returned differences. to_begin : number, optional If provided, this number will be taked onto the beginning of the returned differences. Returns ------- ed : array The differences. Loosely, this will be (ary[1:] - ary[:-1]).
empty_like (a)
Create a new array with the same shape and type as another. Parameters ---------- a : ndarray Returned array will have same shape and type as `a`. See Also -------- zeros_like, ones_like, zeros, ones, empty Notes ----- This function does *not* initialize the returned array; to do that use `zeros_like` or `ones_like` instead. Examples -------- >>> a = np.array([[1,2,3],[4,5,6]]) >>> np.empty_like(a) >>> np.empty_like(a) array([[-1073741821, -1067702173, 65538], #random data [ 25670, 23454291, 71800]])
expand_dims (a, axis)
Expand the shape of an array. Insert a new axis, corresponding to a given position in the array shape. Parameters ---------- a : array_like Input array. axis : int Position (amongst axes) where new axis is to be inserted. Returns ------- res : ndarray Output array. The number of dimensions is one greater than that of the input array. See Also -------- doc.indexing, atleast_1d, atleast_2d, atleast_3d Examples -------- >>> x = np.array([1,2]) >>> x.shape (2,) The following is equivalent to ``x[np.newaxis,:]`` or ``x[np.newaxis]``: >>> y = np.expand_dims(x, axis=0) >>> y array([[1, 2]]) >>> y.shape (1, 2) >>> y = np.expand_dims(x, axis=1) # Equivalent to x[:,newaxis] >>> y array([[1], [2]]) >>> y.shape (2, 1) Note that some examples may use ``None`` instead of ``np.newaxis``. These are the same objects: >>> np.newaxis is None True
extract (condition, arr)
Return the elements of an array that satisfy some condition. This is equivalent to ``np.compress(ravel(condition), ravel(arr))``. If `condition` is boolean ``np.extract`` is equivalent to ``arr[condition]``. Parameters ---------- condition : array_like An array whose nonzero or True entries indicate the elements of `arr` to extract. arr : array_like Input array of the same size as `condition`. See Also -------- take, put, putmask Examples -------- >>> arr = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) >>> arr array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]]) >>> condition = np.mod(arr, 3)==0 >>> condition array([[False, False, True, False], [False, True, False, False], [ True, False, False, True]], dtype=bool) >>> np.extract(condition, arr) array([ 3, 6, 9, 12]) If `condition` is boolean: >>> arr[condition] array([ 3, 6, 9, 12])
eye (N, M=None, k=0, dtype=)
Return a 2-D array with ones on the diagonal and zeros elsewhere. Parameters ---------- N : int Number of rows in the output. M : int, optional Number of columns in the output. If None, defaults to `N`. k : int, optional Index of the diagonal: 0 refers to the main diagonal, a positive value refers to an upper diagonal and a negative value to a lower diagonal. dtype : dtype, optional Data-type of the returned array. Returns ------- I : ndarray (N,M) An array where all elements are equal to zero, except for the k'th diagonal, whose values are equal to one. See Also -------- diag : Return a diagonal 2-D array using a 1-D array specified by the user. Examples -------- >>> np.eye(2, dtype=int) array([[1, 0], [0, 1]]) >>> np.eye(3, k=1) array([[ 0., 1., 0.], [ 0., 0., 1.], [ 0., 0., 0.]])
find_common_type (array_types, scalar_types)
Determine common type following standard coercion rules Parameters ---------- array_types : sequence A list of dtype convertible objects representing arrays scalar_types : sequence A list of dtype convertible objects representing scalars Returns ------- datatype : dtype The common data-type which is the maximum of the array_types ignoring the scalar_types unless the maximum of the scalar_types is of a different kind. If the kinds is not understood, then None is returned.
fix (x, y=None)
Round x to nearest integer towards zero.
flatnonzero (a)
Return indices that are non-zero in the flattened version of a. This is equivalent to a.ravel().nonzero()[0]. Parameters ---------- a : ndarray Input array. Returns ------- res : ndarray Output array, containing the indices of the elements of `a.ravel()` that are non-zero. See Also -------- nonzero : Return the indices of the non-zero elements of the input array. ravel : Return a 1-D array containing the elements of the input array. Examples -------- >>> x = np.arange(-2, 3) >>> x array([-2, -1, 0, 1, 2]) >>> np.flatnonzero(x) array([0, 1, 3, 4]) >>> x.ravel()[np.flatnonzero(x)] array([-2, -1, 1, 2])
fliplr (m)
Left-right flip. Flip the entries in each row in the left/right direction. Columns are preserved, but appear in a different order than before. Parameters ---------- m : array_like Input array. Returns ------- f : ndarray A view of `m` with the columns reversed. Since a view is returned, this operation is :math:`\mathcal O(1)`. See Also -------- flipud : Flip array in the up/down direction. rot90 : Rotate array counterclockwise. Notes ----- Equivalent to A[::-1,...]. Does not require the array to be two-dimensional. Examples -------- >>> A = np.diag([1.,2.,3.]) >>> A array([[ 1., 0., 0.], [ 0., 2., 0.], [ 0., 0., 3.]]) >>> np.fliplr(A) array([[ 0., 0., 1.], [ 0., 2., 0.], [ 3., 0., 0.]]) >>> A = np.random.randn(2,3,5) >>> np.all(numpy.fliplr(A)==A[:,::-1,...]) True
flipud (m)
Up-down flip. Flip the entries in each column in the up/down direction. Rows are preserved, but appear in a different order than before. Parameters ---------- m : array_like Input array. Returns ------- out : array_like A view of `m` with the rows reversed. Since a view is returned, this operation is :math:`\mathcal O(1)`. Notes ----- Equivalent to ``A[::-1,...]``. Does not require the array to be two-dimensional. Examples -------- >>> A = np.diag([1.0, 2, 3]) >>> A array([[ 1., 0., 0.], [ 0., 2., 0.], [ 0., 0., 3.]]) >>> np.flipud(A) array([[ 0., 0., 3.], [ 0., 2., 0.], [ 1., 0., 0.]]) >>> A = np.random.randn(2,3,5) >>> np.all(np.flipud(A)==A[::-1,...]) True >>> np.flipud([1,2]) array([2, 1])
fromfunction (function, shape, **kwargs)
Construct an array by executing a function over each coordinate. The resulting array therefore has a value ``fn(x, y, z)`` at coordinate ``(x, y, z)``. Parameters ---------- fn : callable The function is called with N parameters, each of which represents the coordinates of the array varying along a specific axis. For example, if `shape` were ``(2, 2)``, then the parameters would be two arrays, ``[[0, 0], [1, 1]]`` and ``[[0, 1], [0, 1]]``. `fn` must be capable of operating on arrays, and should return a scalar value. shape : (N,) tuple of ints Shape of the output array, which also determines the shape of the coordinate arrays passed to `fn`. dtype : data-type, optional Data-type of the coordinate arrays passed to `fn`. By default, `dtype` is float. See Also -------- indices, meshgrid Notes ----- Keywords other than `shape` and `dtype` are passed to the function. Examples -------- >>> np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int) array([[ True, False, False], [False, True, False], [False, False, True]], dtype=bool) >>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int) array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])
fromregex (file, regexp, dtype)
Construct an array from a text file, using regular-expressions parsing. Array is constructed from all matches of the regular expression in the file. Groups in the regular expression are converted to fields. Parameters ---------- file : str or file File name or file object to read. regexp : str or regexp Regular expression used to parse the file. Groups in the regular expression correspond to fields in the dtype. dtype : dtype or dtype list Dtype for the structured array Examples -------- >>> f = open('test.dat', 'w') >>> f.write("1312 foo\n1534 bar\n444 qux") >>> f.close() >>> np.fromregex('test.dat', r"(\d+)\s+(...)", ... [('num', np.int64), ('key', 'S3')]) array([(1312L, 'foo'), (1534L, 'bar'), (444L, 'qux')], dtype=[('num', '<i8'), ('key', '|S3')])
fv (rate, nper, pmt, pv, when='end')
Compute the future value. Parameters ---------- rate : array-like Rate of interest (per period) nper : array-like Number of compounding periods pmt : array-like Payment pv : array-like Present value when : array-like When payments are due ('begin' (1) or 'end' (0)) Notes ----- The future value is computed by solving the equation:: fv + pv*(1+rate)**nper + pmt*(1+rate*when)/rate * ((1+rate)**nper - 1) == 0 or, when ``rate == 0``:: fv + pv + pmt * nper == 0 Examples -------- What is the future value after 10 years of saving $100 now, with an additional monthly savings of $100. Assume the interest rate is 5% (annually) compounded monthly? >>> np.fv(0.05/12, 10*12, -100, -100) 15692.928894335748 By convention, the negative sign represents cash flow out (i.e. money not available today). Thus, saving $100 a month at 5% annual interest leads to $15,692.93 available to spend in 10 years.
get_array_wrap (*args)
Find the wrapper for the array with the highest priority. In case of ties, leftmost wins. If no wrapper is found, return None
get_include ()
Return the directory that contains the numpy \*.h header files. Extension modules that need to compile against numpy should use this function to locate the appropriate include directory. Notes ----- When using ``distutils``, for example in ``setup.py``. :: import numpy as np ... Extension('extension_name', ... include_dirs=[np.get_include()]) ...
get_numarray_include (type=None)
Return the directory in the package that contains the numpy/*.h header files. Extension modules that need to compile against numpy should use this function to locate the appropriate include directory. Using distutils: import numpy Extension('extension_name', ... include_dirs=[numpy.get_numarray_include()])
get_numpy_include (*args, **kwds)
get_numpy_include is DEPRECATED!! -- use get_include instead Return the directory that contains the numpy \*.h header files. Extension modules that need to compile against numpy should use this function to locate the appropriate include directory. Notes ----- When using ``distutils``, for example in ``setup.py``. :: import numpy as np ... Extension('extension_name', ... include_dirs=[np.get_include()]) ...
get_printoptions ()
Return the current print options. Returns ------- print_opts : dict Dictionary of current print options with keys - precision : int - threshold : int - edgeitems : int - linewidth : int - suppress : bool - nanstr : string - infstr : string See Also -------- set_printoptions : parameter descriptions
getbufsize ()
Return the size of the buffer used in ufuncs.
geterr ()
Get the current way of handling floating-point errors. Returns a dictionary with entries "divide", "over", "under", and "invalid", whose values are from the strings "ignore", "print", "log", "warn", "raise", and "call".
geterrcall ()
Return the current callback function used on floating-point errors.
gradient (f, *varargs)
Return the gradient of an N-dimensional array. The gradient is computed using central differences in the interior and first differences at the boundaries. The returned gradient hence has the same shape as the input array. Parameters ---------- f : array_like An N-dimensional array containing samples of a scalar function. `*varargs` : scalars 0, 1, or N scalars specifying the sample distances in each direction, that is: `dx`, `dy`, `dz`, ... The default distance is 1. Returns ------- g : ndarray N arrays of the same shape as `f` giving the derivative of `f` with respect to each dimension. Examples -------- >>> np.gradient(np.array([[1,1],[3,4]])) [array([[ 2., 3.], [ 2., 3.]]), array([[ 0., 0.], [ 1., 1.]])]
hamming (M)
Return the Hamming window. The Hamming window is a taper formed by using a weighted cosine. Parameters ---------- M : int Number of points in the output window. If zero or less, an empty array is returned. Returns ------- out : ndarray The window, normalized to one (the value one appears only if the number of samples is odd). See Also -------- bartlett, blackman, hanning, kaiser Notes ----- The Hamming window is defined as .. math:: w(n) = 0.54 + 0.46cos\left(\frac{2\pi{n}}{M-1}\right) \qquad 0 \leq n \leq M-1 The Hamming was named for R. W. Hamming, an associate of J. W. Tukey and is described in Blackman and Tukey. It was recommended for smoothing the truncated autocovariance function in the time domain. Most references to the Hamming window come from the signal processing literature, where it is used as one of many windowing functions for smoothing values. It is also known as an apodization (which means "removing the foot", i.e. smoothing discontinuities at the beginning and end of the sampled signal) or tapering function. References ---------- .. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra, Dover Publications, New York. .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The University of Alberta Press, 1975, pp. 109-110. .. [3] Wikipedia, "Window function", http://en.wikipedia.org/wiki/Window_function .. [4] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling, "Numerical Recipes", Cambridge University Press, 1986, page 425. Examples -------- >>> from numpy import hamming >>> hamming(12) array([ 0.08 , 0.15302337, 0.34890909, 0.60546483, 0.84123594, 0.98136677, 0.98136677, 0.84123594, 0.60546483, 0.34890909, 0.15302337, 0.08 ]) Plot the window and the frequency response: >>> from numpy import clip, log10, array, hamming >>> from scipy.fftpack import fft, fftshift >>> import matplotlib.pyplot as plt >>> window = hamming(51) >>> plt.plot(window) >>> plt.title("Hamming window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample") >>> plt.show() >>> A = fft(window, 2048) / 25.5 >>> mag = abs(fftshift(A)) >>> freq = linspace(-0.5,0.5,len(A)) >>> response = 20*log10(mag) >>> response = clip(response,-100,100) >>> plt.plot(freq, response) >>> plt.title("Frequency response of Hamming window") >>> plt.ylabel("Magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]") >>> plt.axis('tight'); plt.show()
hanning (M)
Return the Hanning window. The Hanning window is a taper formed by using a weighted cosine. Parameters ---------- M : int Number of points in the output window. If zero or less, an empty array is returned. Returns ------- out : array The window, normalized to one (the value one appears only if the number of samples is odd). See Also -------- bartlett, blackman, hamming, kaiser Notes ----- The Hanning window is defined as .. math:: w(n) = 0.5 - 0.5cos\left(\frac{2\pi{n}}{M-1}\right) \qquad 0 \leq n \leq M-1 The Hanning was named for Julius van Hann, an Austrian meterologist. It is also known as the Cosine Bell. Some authors prefer that it be called a Hann window, to help avoid confusion with the very similar Hamming window. Most references to the Hanning window come from the signal processing literature, where it is used as one of many windowing functions for smoothing values. It is also known as an apodization (which means "removing the foot", i.e. smoothing discontinuities at the beginning and end of the sampled signal) or tapering function. References ---------- .. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra, Dover Publications, New York. .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The University of Alberta Press, 1975, pp. 106-108. .. [3] Wikipedia, "Window function", http://en.wikipedia.org/wiki/Window_function .. [4] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling, "Numerical Recipes", Cambridge University Press, 1986, page 425. Examples -------- >>> from numpy import hanning >>> hanning(12) array([ 0. , 0.07937323, 0.29229249, 0.57115742, 0.82743037, 0.97974649, 0.97974649, 0.82743037, 0.57115742, 0.29229249, 0.07937323, 0. ]) Plot the window and its frequency response: >>> from numpy.fft import fft, fftshift >>> import matplotlib.pyplot as plt >>> window = np.hanning(51) >>> plt.subplot(121) >>> plt.plot(window) >>> plt.title("Hann window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample") >>> A = fft(window, 2048) / 25.5 >>> mag = abs(fftshift(A)) >>> freq = np.linspace(-0.5,0.5,len(A)) >>> response = 20*np.log10(mag) >>> response = np.clip(response,-100,100) >>> plt.subplot(122) >>> plt.plot(freq, response) >>> plt.title("Frequency response of the Hann window") >>> plt.ylabel("Magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]") >>> plt.axis('tight'); plt.show()
histogram (a, bins=10, range=None, normed=False, weights=None, new=None)
Compute the histogram of a set of data. Parameters ---------- a : array_like Input data. bins : int or sequence of scalars, optional If `bins` is an int, it defines the number of equal-width bins in the given range (10, by default). If `bins` is a sequence, it defines the bin edges, including the rightmost edge, allowing for non-uniform bin widths. range : (float, float), optional The lower and upper range of the bins. If not provided, range is simply ``(a.min(), a.max())``. Values outside the range are ignored. Note that with `new` set to False, values below the range are ignored, while those above the range are tallied in the rightmost bin. normed : bool, optional If False, the result will contain the number of samples in each bin. If True, the result is the value of the probability *density* function at the bin, normalized such that the *integral* over the range is 1. Note that the sum of the histogram values will often not be equal to 1; it is not a probability *mass* function. weights : array_like, optional An array of weights, of the same shape as `a`. Each value in `a` only contributes its associated weight towards the bin count (instead of 1). If `normed` is True, the weights are normalized, so that the integral of the density over the range remains 1. The `weights` keyword is only available with `new` set to True. new : {None, True, False}, optional Whether to use the new semantics for histogram: * None : the new behaviour is used, and a warning is printed, * True : the new behaviour is used and no warning is printed, * False : the old behaviour is used and a message is printed warning about future deprecation. Returns ------- hist : array The values of the histogram. See `normed` and `weights` for a description of the possible semantics. bin_edges : array of dtype float Return the bin edges ``(length(hist)+1)``. With ``new=False``, return the left bin edges (``length(hist)``). See Also -------- histogramdd Notes ----- All but the last (righthand-most) bin is half-open. In other words, if `bins` is:: [1, 2, 3, 4] then the first bin is ``[1, 2)`` (including 1, but excluding 2) and the second ``[2, 3)``. The last bin, however, is ``[3, 4]``, which *includes* 4. Examples -------- >>> np.histogram([1,2,1], bins=[0,1,2,3], new=True) (array([0, 2, 1]), array([0, 1, 2, 3]))
histogram2d (x, y, bins=10, range=None, normed=False, weights=None)
Compute the bidimensional histogram of two data samples. Parameters ---------- x : array-like (N,) A sequence of values to be histogrammed along the first dimension. y : array-like (N,) A sequence of values to be histogrammed along the second dimension. bins : int or [int, int] or array-like or [array, array], optional The bin specification: * the number of bins for the two dimensions (nx=ny=bins), * the number of bins in each dimension (nx, ny = bins), * the bin edges for the two dimensions (x_edges=y_edges=bins), * the bin edges in each dimension (x_edges, y_edges = bins). range : array-like, (2,2), optional The leftmost and rightmost edges of the bins along each dimension (if not specified explicitly in the `bins` parameters): [[xmin, xmax], [ymin, ymax]]. All values outside of this range will be considered outliers and not tallied in the histogram. normed : boolean, optional If False, returns the number of samples in each bin. If True, returns the bin density, ie, the bin count divided by the bin area. weights : array-like (N,), optional An array of values `w_i` weighing each sample `(x_i, y_i)`. Weights are normalized to 1 if normed is True. If normed is False, the values of the returned histogram are equal to the sum of the weights belonging to the samples falling into each bin. Returns ------- H : array (nx, ny) The bidimensional histogram of samples x and y. Values in x are histogrammed along the first dimension and values in y are histogrammed along the second dimension. xedges : array (nx,) The bin edges along the first dimension. yedges : array (ny,) The bin edges along the second dimension. See Also -------- histogram: 1D histogram histogramdd: Multidimensional histogram Notes ----- When normed is True, then the returned histogram is the sample density, defined such that: .. math:: \sum_{i=0}^{nx-1} \sum_{j=0}^{ny-1} H_{i,j} \Delta x_i \Delta y_j = 1 where :math:`H` is the histogram array and :math:`\Delta x_i \Delta y_i` the area of bin :math:`{i,j}`. Please note that the histogram does not follow the cartesian convention where `x` values are on the abcissa and `y` values on the ordinate axis. Rather, `x` is histogrammed along the first dimension of the array (vertical), and `y` along the second dimension of the array (horizontal). This ensures compatibility with `histogrammdd`. Examples -------- >>> x,y = np.random.randn(2,100) >>> H, xedges, yedges = np.histogram2d(x, y, bins = (5, 8)) >>> H.shape, xedges.shape, yedges.shape ((5,8), (6,), (9,))
histogramdd (sample, bins=10, range=None, normed=False, weights=None)
Compute the multidimensional histogram of some data. Parameters ---------- sample : array-like Data to histogram passed as a sequence of D arrays of length N, or as an (N,D) array. bins : sequence or int, optional The bin specification: * A sequence of arrays describing the bin edges along each dimension. * The number of bins for each dimension (nx, ny, ... =bins) * The number of bins for all dimensions (nx=ny=...=bins). range : sequence, optional A sequence of lower and upper bin edges to be used if the edges are not given explicitely in `bins`. Defaults to the minimum and maximum values along each dimension. normed : boolean, optional If False, returns the number of samples in each bin. If True, returns the bin density, ie, the bin count divided by the bin hypervolume. weights : array-like (N,), optional An array of values `w_i` weighing each sample `(x_i, y_i, z_i, ...)`. Weights are normalized to 1 if normed is True. If normed is False, the values of the returned histogram are equal to the sum of the weights belonging to the samples falling into each bin. Returns ------- H : array The multidimensional histogram of sample x. See normed and weights for the different possible semantics. edges : list A list of D arrays describing the bin edges for each dimension. See Also -------- histogram: 1D histogram histogram2d: 2D histogram Examples -------- >>> r = np.random.randn(100,3) >>> H, edges = np.histogramdd(r, bins = (5, 8, 4)) >>> H.shape, edges[0].size, edges[1].size, edges[2].size ((5,8,4), 6, 9, 5)
hsplit (ary, indices_or_sections)
Split array into multiple sub-arrays horizontally. Please refer to the `numpy.split` documentation. `hsplit` is equivalent to `numpy.split` with ``axis = 1``. See Also -------- split : Split array into multiple sub-arrays. Examples -------- >>> x = np.arange(16.0).reshape(4, 4) >>> np.hsplit(x, 2) <BLANKLINE> [array([[ 0., 1.], [ 4., 5.], [ 8., 9.], [ 12., 13.]]), array([[ 2., 3.], [ 6., 7.], [ 10., 11.], [ 14., 15.]])] >>> np.hsplit(x, array([3, 6])) <BLANKLINE> [array([[ 0., 1., 2.], [ 4., 5., 6.], [ 8., 9., 10.], [ 12., 13., 14.]]), array([[ 3.], [ 7.], [ 11.], [ 15.]]), array([], dtype=float64)]
hstack (tup)
Stack arrays in sequence horizontally (column wise) Take a sequence of arrays and stack them horizontally to make a single array. hstack will rebuild arrays divided by hsplit. Parameters ---------- tup : sequence of ndarrays All arrays must have the same shape along all but the second axis. Returns ------- stacked : ndarray Ndarray formed by stacking the given arrays. Examples -------- >>> a = np.array((1,2,3)) >>> b = np.array((2,3,4)) >>> np.hstack((a,b)) array([1, 2, 3, 2, 3, 4]) >>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.hstack((a,b)) array([[1, 2], [2, 3], [3, 4]])
i0 (x)
Modified Bessel function of the first kind, order 0, :math:`I_0` Parameters ---------- x : array-like, dtype float or complex Argument of the Bessel function. Returns ------- out : ndarray, shape z.shape, dtype z.dtype The modified Bessel function evaluated for all elements of `x`. Examples -------- >>> np.i0([0.]) array(1.0) >>> np.i0([0., 1. + 2j]) array([ 1.00000000+0.j , 0.18785373+0.64616944j])
identity (n, dtype=None)
Return the identity array. The identity array is a square array with ones on the main diagonal. Parameters ---------- n : int Number of rows (and columns) in `n` x `n` output. dtype : data-type, optional Data-type of the output. Defaults to ``float``. Returns ------- out : ndarray `n` x `n` array with its main diagonal set to one, and all other elements 0. Examples -------- >>> np.identity(3) array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
imag (val)
Return the imaginary part of array. Parameters ---------- val : array_like Input array. Returns ------- out : ndarray, real or int Real part of each element, same shape as `val`.
indices (dimensions, dtype=)
Return an array representing the coordinates of a grid. Parameters ---------- shape : (N,) tuple of ints Returns ------- grid : ndarray The output shape is ``(N,) + shape``. I.e., if `shape` is ``(2,4,5)``, the output shape is ``(3, 2, 4, 5)``. Each subarray, ``grid[i,...]`` contains values that vary only along the ``i-th`` axis. Examples -------- >>> grid = np.indices((2,3)) The row-positions are given by: >>> grid[0] array([[0, 0, 0], [1, 1, 1]]) and the column-positions by >>> grid[1] array([[0, 1, 2], [0, 1, 2]]) See Also -------- mgrid, meshgrid, ndindex
info (object=None, maxwidth=76, output=', mode 'w' at 0x2aaaaaabf198>, toplevel='numpy')
Get help information for a function, class, or module. Example: >>> np.info(np.polyval) # doctest: +SKIP polyval(p, x) Evaluate the polymnomial p at x. Description: If p is of length N, this function returns the value: p[0]*(x**N-1) + p[1]*(x**N-2) + ... + p[N-2]*x + p[N-1]
insert (arr, obj, values, axis=None)
Insert values along the given axis before the given indices. Parameters ---------- arr : array_like Input array. obj : {integer, slice, integer array_like} Insert `values` before `obj` indices. values : Values to insert into `arr`. axis : int, optional Axis along which to insert `values`. If `axis` is None then ravel `arr` first. Examples -------- >>> a = np.array([[1,2,3], ... [4,5,6], ... [7,8,9]]) >>> np.insert(a, [1,2], [[4],[5]], axis=0) array([[1, 2, 3], [4, 4, 4], [4, 5, 6], [5, 5, 5], [7, 8, 9]])
interp (x, xp, fp, left=None, right=None)
One-dimensional linear interpolation. Returns the one-dimensional piecewise linear interpolant to a function with given values at discrete data-points. Parameters ---------- x : array_like The x-coordinates of the interpolated values. xp : 1-D sequence of floats The x-coordinates of the data points, must be increasing. fp : 1-D sequence of floats The y-coordinates of the data points, same length as `xp`. left : float, optional Value to return for `x < xp[0]`, default is `fp[0]`. right : float, optional Value to return for `x > xp[-1]`, defaults is `fp[-1]`. Returns ------- y : {float, ndarray} The interpolated values, same shape as `x`. Raises ------ ValueError If `xp` and `fp` have different length Notes ----- Does not check that the x-coordinate sequence `xp` is increasing. If `xp` is not increasing, the results are nonsense. A simple check for increasingness is:: np.all(np.diff(xp) > 0) Examples -------- >>> xp = [1, 2, 3] >>> fp = [3, 2, 0] >>> np.interp(2.5, xp, fp) 1.0 >>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp) array([ 3. , 3. , 2.5, 0.56, 0. ]) >>> UNDEF = -99.0 >>> np.interp(3.14, xp, fp, right=UNDEF) -99.0
intersect1d (ar1, ar2)
Intersection returning repeated or unique elements common to both arrays. Parameters ---------- ar1,ar2 : array_like Input arrays. Returns ------- out : ndarray, shape(N,) Sorted 1D array of common elements with repeating elements. See Also -------- intersect1d_nu : Returns only unique common elements. numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays. Examples -------- >>> np.intersect1d([1,3,3],[3,1,1]) array([1, 1, 3, 3])
intersect1d_nu (ar1, ar2)
Intersection returning unique elements common to both arrays. Parameters ---------- ar1,ar2 : array_like Input arrays. Returns ------- out : ndarray, shape(N,) Sorted 1D array of common and unique elements. See Also -------- intersect1d : Returns repeated or unique common elements. numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays. Examples -------- >>> np.intersect1d_nu([1,3,3],[3,1,1]) array([1, 3])
ipmt (rate, per, nper, pv, fv=0.0, when='end')
Not implemented.
irr (values)
Internal Rate of Return This is the rate of return that gives a net present value of 0.0 npv(irr(values), values) == 0.0
iscomplex (x)
Return a boolean array where elements are True if that element is complex (has non-zero imaginary part). For scalars, return a boolean.
iscomplexobj (x)
Return True if x is a complex type or an array of complex numbers. Unlike iscomplex(x), complex(3.0) is considered a complex object.
isfortran (a)
Returns True if array is arranged in Fortran-order and dimension > 1. Parameters ---------- a : ndarray Input array to test.
isneginf (x, y=None)
Return True where x is -infinity, and False otherwise. Parameters ---------- x : array_like The input array. y : array_like A boolean array with the same shape as `x` to store the result. Returns ------- y : ndarray A boolean array where y[i] = True only if x[i] = -Inf. See Also -------- isposinf, isfinite Examples -------- >>> np.isneginf([-np.inf, 0., np.inf]) array([ True, False, False], dtype=bool)
isposinf (x, y=None)
Return True where x is +infinity, and False otherwise. Parameters ---------- x : array_like The input array. y : array_like A boolean array with the same shape as `x` to store the result. Returns ------- y : ndarray A boolean array where y[i] = True only if x[i] = +Inf. See Also -------- isneginf, isfinite Examples -------- >>> np.isposinf([-np.inf, 0., np.inf]) array([ False, False, True], dtype=bool)
isreal (x)
Returns a bool array where True if the corresponding input element is real. True if complex part is zero. Parameters ---------- x : array_like Input array. Returns ------- out : ndarray, bool Boolean array of same shape as `x`. Examples -------- >>> np.isreal([1+1j, 1+0j, 4.5, 3, 2, 2j]) >>> array([False, True, True, True, True, False], dtype=bool)
isrealobj (x)
Return True if x is not a complex type. Unlike isreal(x), complex(3.0) is considered a complex object.
isscalar (num)
Returns True if the type of num is a scalar type. Parameters ---------- num : any Input argument. Returns ------- val : bool True if `num` is a scalar type, False if it is not. Examples -------- >>> np.isscalar(3.1) True >>> np.isscalar([3.1]) False >>> np.isscalar(False) True
issctype (rep)
Determines whether the given object represents a numeric array type.
issubclass_ (arg1, arg2)
issubdtype (arg1, arg2)
Returns True if first argument is a typecode lower/equal in type hierarchy. Parameters ---------- arg1 : dtype_like dtype or string representing a typecode. arg2 : dtype_like dtype or string representing a typecode. See Also -------- numpy.core.numerictypes : Overview of numpy type hierarchy. Examples -------- >>> np.issubdtype('S1', str) True >>> np.issubdtype(np.float64, np.float32) False
issubsctype (arg1, arg2)
iterable (y)
ix_ (*args)
Construct an open mesh from multiple sequences. This function takes n 1-d sequences and returns n outputs with n dimensions each such that the shape is 1 in all but one dimension and the dimension with the non-unit shape value cycles through all n dimensions. Using ix_() one can quickly construct index arrays that will index the cross product. a[ix_([1,3,7],[2,5,8])] returns the array a[1,2] a[1,5] a[1,8] a[3,2] a[3,5] a[3,8] a[7,2] a[7,5] a[7,8]
kaiser (M, beta)
Return the Kaiser window. The Kaiser window is a taper formed by using a Bessel function. Parameters ---------- M : int Number of points in the output window. If zero or less, an empty array is returned. beta : float Shape parameter for window. Returns ------- out : array The window, normalized to one (the value one appears only if the number of samples is odd). See Also -------- bartlett, blackman, hamming, hanning Notes ----- The Kaiser window is defined as .. math:: w(n) = I_0\left( \beta \sqrt{1-\frac{4n^2}{(M-1)^2}} \right)/I_0(\beta) with .. math:: \quad -\frac{M-1}{2} \leq n \leq \frac{M-1}{2}, where :math:`I_0` is the modified zeroth-order Bessel function. The Kaiser was named for Jim Kaiser, who discovered a simple approximation to the DPSS window based on Bessel functions. The Kaiser window is a very good approximation to the Digital Prolate Spheroidal Sequence, or Slepian window, which is the transform which maximizes the energy in the main lobe of the window relative to total energy. The Kaiser can approximate many other windows by varying the beta parameter. ==== ======================= beta Window shape ==== ======================= 0 Rectangular 5 Similar to a Hamming 6 Similar to a Hanning 8.6 Similar to a Blackman ==== ======================= A beta value of 14 is probably a good starting point. Note that as beta gets large, the window narrows, and so the number of samples needs to be large enough to sample the increasingly narrow spike, otherwise nans will get returned. Most references to the Kaiser window come from the signal processing literature, where it is used as one of many windowing functions for smoothing values. It is also known as an apodization (which means "removing the foot", i.e. smoothing discontinuities at the beginning and end of the sampled signal) or tapering function. References ---------- .. [1] J. F. Kaiser, "Digital Filters" - Ch 7 in "Systems analysis by digital computer", Editors: F.F. Kuo and J.F. Kaiser, p 218-285. John Wiley and Sons, New York, (1966). .. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The University of Alberta Press, 1975, pp. 177-178. .. [3] Wikipedia, "Window function", http://en.wikipedia.org/wiki/Window_function Examples -------- >>> from numpy import kaiser >>> kaiser(12, 14) array([ 7.72686684e-06, 3.46009194e-03, 4.65200189e-02, 2.29737120e-01, 5.99885316e-01, 9.45674898e-01, 9.45674898e-01, 5.99885316e-01, 2.29737120e-01, 4.65200189e-02, 3.46009194e-03, 7.72686684e-06]) Plot the window and the frequency response: >>> from numpy import clip, log10, array, kaiser >>> from scipy.fftpack import fft, fftshift >>> import matplotlib.pyplot as plt >>> window = kaiser(51, 14) >>> plt.plot(window) >>> plt.title("Kaiser window") >>> plt.ylabel("Amplitude") >>> plt.xlabel("Sample") >>> plt.show() >>> A = fft(window, 2048) / 25.5 >>> mag = abs(fftshift(A)) >>> freq = linspace(-0.5,0.5,len(A)) >>> response = 20*log10(mag) >>> response = clip(response,-100,100) >>> plt.plot(freq, response) >>> plt.title("Frequency response of Kaiser window") >>> plt.ylabel("Magnitude [dB]") >>> plt.xlabel("Normalized frequency [cycles per sample]") >>> plt.axis('tight'); plt.show()
kron (a, b)
Kronecker product of two arrays. Computes the Kronecker product, a composite array made of blocks of the second array scaled by the first. Parameters ---------- a, b : array_like Returns ------- out : ndarray See Also -------- outer : The outer product Notes ----- The function assumes that the number of dimenensions of `a` and `b` are the same, if necessary prepending the smallest with ones. If `a.shape = (r0,r1,..,rN)` and `b.shape = (s0,s1,...,sN)`, the Kronecker product has shape `(r0*s0, r1*s1, ..., rN*SN)`. The elements are products of elements from `a` and `b`, organized explicitly by:: kron(a,b)[k0,k1,...,kN] = a[i0,i1,...,iN] * b[j0,j1,...,jN] where:: kt = it * st + jt, t = 0,...,N In the common 2-D case (N=1), the block structure can be visualized:: [[ a[0,0]*b, a[0,1]*b, ... , a[0,-1]*b ], [ ... ... ], [ a[-1,0]*b, a[-1,1]*b, ... , a[-1,-1]*b ]] Examples -------- >>> np.kron([1,10,100], [5,6,7]) array([ 5, 6, 7, 50, 60, 70, 500, 600, 700]) >>> np.kron([5,6,7], [1,10,100]) array([ 5, 50, 500, 6, 60, 600, 7, 70, 700]) >>> np.kron(np.eye(2), np.ones((2,2))) array([[ 1., 1., 0., 0.], [ 1., 1., 0., 0.], [ 0., 0., 1., 1.], [ 0., 0., 1., 1.]]) >>> a = np.arange(100).reshape((2,5,2,5)) >>> b = np.arange(24).reshape((2,3,4)) >>> c = np.kron(a,b) >>> c.shape (2, 10, 6, 20) >>> I = (1,3,0,2) >>> J = (0,2,1) >>> J1 = (0,) + J # extend to ndim=4 >>> S1 = (1,) + b.shape >>> K = tuple(np.array(I) * np.array(S1) + np.array(J1)) >>> C[K] == A[I]*B[J] True
linspace (start, stop, num=50, endpoint=True, retstep=False)
Return evenly spaced numbers. `linspace` returns `num` evenly spaced samples, calculated over the interval ``[start, stop]``. The endpoint of the interval can optionally be excluded. Parameters ---------- start : float The starting value of the sequence. stop : float The end value of the sequence, unless `endpoint` is set to False. In that case, the sequence consists of all but the last of ``num + 1`` evenly spaced samples, so that `stop` is excluded. Note that the step size changes when `endpoint` is False. num : int Number of samples to generate. Default is 50. endpoint : bool If true, `stop` is the last sample. Otherwise, it is not included. Default is True. retstep : bool If True, return (`samples`, `step`), where `step` is the spacing between samples. Returns ------- samples : ndarray `num` equally spaced samples in the closed interval ``[start, stop]`` or the half-open interval ``[start, stop)`` (depending on whether `endpoint` is True or False). step : float (only if `retstep` is True) Size of spacing between samples. See Also -------- arange : Similiar to `linspace`, but uses a step size (instead of the number of samples). Note that, when used with a float endpoint, the endpoint may or may not be included. logspace : Samples uniformly distributed in log space. Examples -------- >>> np.linspace(2.0, 3.0, num=5) array([ 2. , 2.25, 2.5 , 2.75, 3. ]) >>> np.linspace(2.0, 3.0, num=5, endpoint=False) array([ 2. , 2.2, 2.4, 2.6, 2.8]) >>> np.linspace(2.0, 3.0, num=5, retstep=True) (array([ 2. , 2.25, 2.5 , 2.75, 3. ]), 0.25) Graphical illustration: >>> import matplotlib.pyplot as plt >>> N = 8 >>> y = np.zeros(N) >>> x1 = np.linspace(0, 10, N, endpoint=True) >>> x2 = np.linspace(0, 10, N, endpoint=False) >>> plt.plot(x1, y, 'o') >>> plt.plot(x2, y + 0.5, 'o') >>> plt.ylim([-0.5, 1]) >>> plt.show()
load (file, memmap=False)
Load pickled, ``.npy``, and ``.npz`` binary files. Parameters ---------- file : file-like object or string The file to read. It must support seek and read methods. memmap : bool If True, then memory-map the ``.npy`` file (or unzip the ``.npz`` file into a temporary directory and memory-map each component). This has no effect for a pickled file. Returns ------- result : array, tuple, dict, etc. Data stored in the file. - If file contains pickle data, then whatever is stored in the pickle is returned. - If the file is a ``.npy`` file, then an array is returned. - If the file is a ``.npz`` file, then a dictionary-like object is returned, containing {filename: array} key-value pairs, one for every file in the archive. Raises ------ IOError If the input file does not exist or cannot be read. Examples -------- >>> np.save('/tmp/123', np.array([1, 2, 3]) >>> np.load('/tmp/123.npy') array([1, 2, 3])
loadtxt (fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False)
Load data from a text file. Each row in the text file must have the same number of values. Parameters ---------- fname : file or string File or filename to read. If the filename extension is ``.gz``, the file is first decompressed. dtype : data-type Data type of the resulting array. If this is a record data-type, the resulting array will be 1-dimensional, and each row will be interpreted as an element of the array. In this case, the number of columns used must match the number of fields in the data-type. comments : string, optional The character used to indicate the start of a comment. delimiter : string, optional The string used to separate values. By default, this is any whitespace. converters : {} A dictionary mapping column number to a function that will convert that column to a float. E.g., if column 0 is a date string: ``converters = {0: datestr2num}``. Converters can also be used to provide a default value for missing data: ``converters = {3: lambda s: float(s or 0)}``. skiprows : int Skip the first `skiprows` lines. usecols : sequence Which columns to read, with 0 being the first. For example, ``usecols = (1,4,5)`` will extract the 2nd, 5th and 6th columns. unpack : bool If True, the returned array is transposed, so that arguments may be unpacked using ``x, y, z = loadtxt(...)`` Returns ------- out : ndarray Data read from the text file. See Also -------- scipy.io.loadmat : reads Matlab(R) data files Examples -------- >>> from StringIO import StringIO # StringIO behaves like a file object >>> c = StringIO("0 1\n2 3") >>> np.loadtxt(c) array([[ 0., 1.], [ 2., 3.]]) >>> d = StringIO("M 21 72\nF 35 58") >>> np.loadtxt(d, dtype={'names': ('gender', 'age', 'weight'), ... 'formats': ('S1', 'i4', 'f4')}) array([('M', 21, 72.0), ('F', 35, 58.0)], dtype=[('gender', '|S1'), ('age', '<i4'), ('weight', '<f4')]) >>> c = StringIO("1,0,2\n3,0,4") >>> x,y = np.loadtxt(c, delimiter=',', usecols=(0,2), unpack=True) >>> x array([ 1., 3.]) >>> y array([ 2., 4.])
log2 (x, y=None)
Return the base 2 logarithm. Parameters ---------- x : array_like Input array. y : array_like Optional output array with the same shape as `x`. Returns ------- y : {ndarray, scalar} The logarithm to the base 2 of `x` elementwise. NaNs are returned where `x` is negative. See Also -------- log, log1p, log10 Examples -------- >>> np.log2([-1,2,4]) array([ NaN, 1., 2.])
logspace (start, stop, num=50, endpoint=True, base=10.0)
Return numbers spaced evenly on a log scale. In linear space, the sequence starts at ``base ** start`` (`base` to the power of `start`) and ends with ``base ** stop`` (see `endpoint` below). Parameters ---------- start : float ``base ** start`` is the starting value of the sequence. stop : float ``base ** stop`` is the final value of the sequence, unless `endpoint` is False. In that case, ``num + 1`` values are spaced over the interval in log-space, of which all but the last (a sequence of length ``num``) are returned. num : integer, optional Number of samples to generate. Default is 50. endpoint : boolean, optional If true, `stop` is the last sample. Otherwise, it is not included. Default is True. base : float, optional The base of the log space. The step size between the elements in ``ln(samples) / ln(base)`` (or ``log_base(samples)``) is uniform. Default is 10.0. Returns ------- samples : ndarray `num` samples, equally spaced on a log scale. See Also -------- arange : Similiar to linspace, with the step size specified instead of the number of samples. Note that, when used with a float endpoint, the endpoint may or may not be included. linspace : Similar to logspace, but with the samples uniformly distributed in linear space, instead of log space. Notes ----- Logspace is equivalent to the code >>> y = linspace(start, stop, num=num, endpoint=endpoint) >>> power(base, y) Examples -------- >>> np.logspace(2.0, 3.0, num=4) array([ 100. , 215.443469 , 464.15888336, 1000. ]) >>> np.logspace(2.0, 3.0, num=4, endpoint=False) array([ 100. , 177.827941 , 316.22776602, 562.34132519]) >>> np.logspace(2.0, 3.0, num=4, base=2.0) array([ 4. , 5.0396842 , 6.34960421, 8. ]) Graphical illustration: >>> import matplotlib.pyplot as plt >>> N = 10 >>> x1 = np.logspace(0.1, 1, N, endpoint=True) >>> x2 = np.logspace(0.1, 1, N, endpoint=False) >>> y = np.zeros(N) >>> plt.plot(x1, y, 'o') >>> plt.plot(x2, y + 0.5, 'o') >>> plt.ylim([-0.5, 1]) >>> plt.show()
lookfor (what, module=None, import_modules=True, regenerate=False)
Do a keyword search on docstrings. A list of of objects that matched the search is displayed, sorted by relevance. Parameters ---------- what : str String containing words to look for. module : str, module Module whose docstrings to go through. import_modules : bool Whether to import sub-modules in packages. Will import only modules in ``__all__``. regenerate : bool Whether to re-generate the docstring cache. Examples -------- >>> np.lookfor('binary representation') Search results for 'binary representation' ------------------------------------------ numpy.binary_repr Return the binary representation of the input number as a string.
asmatrix (data, dtype=None)
Interpret the input as a matrix. Unlike `matrix`, `asmatrix` does not make a copy if the input is already a matrix or an ndarray. Equivalent to ``matrix(data, copy=False)``. Parameters ---------- data : array_like Input data. Returns ------- mat : matrix `data` interpreted as a matrix. Examples -------- >>> x = np.array([[1, 2], [3, 4]]) >>> m = np.asmatrix(x) >>> x[0,0] = 5 >>> m matrix([[5, 2], [3, 4]])
amax (a, axis=None, out=None)
Return the maximum along a given axis. Parameters ---------- a : array_like Input data. axis : int, optional Axis along which to operate. By default flattened input is used. out : ndarray, optional Alternative output array in which to place the result. Must be of the same shape and buffer length as the expected output. Returns ------- amax : {ndarray, scalar} A new array or a scalar with the result, or a reference to `out` if it was specified. Examples -------- >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]]) >>> np.amax(x,0) array([2, 3]) >>> np.amax(x,1) array([1, 3])
maximum_sctype (t)
returns the sctype of highest precision of the same general kind as 't'
may_share_memory (a, b)
Determine if two arrays can share memory The memory-bounds of a and b are computed. If they overlap then this function returns True. Otherwise, it returns False. A return of True does not necessarily mean that the two arrays share any element. It just means that they *might*.
mean (a, axis=None, dtype=None, out=None)
Compute the arithmetic mean along the specified axis. Returns the average of the array elements. The average is taken over the flattened array by default, otherwise over the specified axis. float64 intermediate and return values are used for integer inputs. Parameters ---------- a : array_like Array containing numbers whose mean is desired. If `a` is not an array, a conversion is attempted. axis : {None, int}, optional Axis along which the means are computed. The default is to compute the mean of the flattened array. dtype : {None, dtype}, optional Type to use in computing the mean. For integer inputs the default is float64; for floating point inputs it is the same as the input dtype. out : {None, ndarray}, optional Alternative output array in which to place the result. It must have the same shape as the expected output but the type will be cast if necessary. Returns ------- mean : {ndarray, scalar}, see dtype parameter above If `out=None`, returns a new array containing the mean values, otherwise a reference to the output array is returned. See Also -------- average : Weighted average Notes ----- The arithmetic mean is the sum of the elements along the axis divided by the number of elements. Examples -------- >>> a = np.array([[1,2],[3,4]]) >>> np.mean(a) 2.5 >>> np.mean(a,0) array([ 2., 3.]) >>> np.mean(a,1) array([ 1.5, 3.5])
median (a, axis=None, out=None, overwrite_input=False)
Compute the median along the specified axis. Returns the median of the array elements. Parameters ---------- a : array_like Input array or object that can be converted to an array. axis : {None, int}, optional Axis along which the medians are computed. The default (axis=None) is to compute the median along a flattened version of the array. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape and buffer length as the expected output, but the type (of the output) will be cast if necessary. overwrite_input : {False, True}, optional If True, then allow use of memory of input array (a) for calculations. The input array will be modified by the call to median. This will save memory when you do not need to preserve the contents of the input array. Treat the input as undefined, but it will probably be fully or partially sorted. Default is False. Note that, if `overwrite_input` is True and the input is not already an ndarray, an error will be raised. Returns ------- median : ndarray A new array holding the result (unless `out` is specified, in which case that array is returned instead). If the input contains integers, or floats of smaller precision than 64, then the output data-type is float64. Otherwise, the output data-type is the same as that of the input. See Also -------- mean Notes ----- Given a vector V of length N, the median of V is the middle value of a sorted copy of V, ``V_sorted`` - i.e., ``V_sorted[(N-1)/2]``, when N is odd. When N is even, it is the average of the two middle values of ``V_sorted``. Examples -------- >>> a = np.array([[10, 7, 4], [3, 2, 1]]) >>> a array([[10, 7, 4], [ 3, 2, 1]]) >>> np.median(a) 3.5 >>> np.median(a, axis=0) array([ 6.5, 4.5, 2.5]) >>> np.median(a, axis=1) array([ 7., 2.]) >>> m = np.median(a, axis=0) >>> out = np.zeros_like(m) >>> np.median(a, axis=0, out=m) array([ 6.5, 4.5, 2.5]) >>> m array([ 6.5, 4.5, 2.5]) >>> b = a.copy() >>> np.median(b, axis=1, overwrite_input=True) array([ 7., 2.]) >>> assert not np.all(a==b) >>> b = a.copy() >>> np.median(b, axis=None, overwrite_input=True) 3.5 >>> assert not np.all(a==b)
meshgrid (x, y)
Return coordinate matrices from two coordinate vectors. Parameters ---------- x, y : ndarray Two 1D arrays representing the x and y coordinates Returns ------- X, Y : ndarray For vectors `x`, `y` with lengths Nx=len(`x`) and Ny=len(`y`), return `X`, `Y` where `X` and `Y` are (Ny, Nx) shaped arrays with the elements of `x` and y repeated to fill the matrix along the first dimension for `x`, the second for `y`. See Also -------- numpy.mgrid : Construct a multi-dimensional "meshgrid" using indexing notation. Examples -------- >>> X, Y = numpy.meshgrid([1,2,3], [4,5,6,7]) >>> X array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]) >>> Y array([[4, 4, 4], [5, 5, 5], [6, 6, 6], [7, 7, 7]])
amin (a, axis=None, out=None)
Return the minimum along a given axis. Parameters ---------- a : array_like Input data. axis : int, optional Axis along which to operate. By default a flattened input is used. out : ndarray, optional Alternative output array in which to place the result. Must be of the same shape and buffer length as the expected output. Returns ------- amin : {ndarray, scalar} A new array or a scalar with the result, or a reference to `out` if it was specified. Examples -------- >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]]) >>> np.amin(x,0) array([0, 1]) >>> np.amin(x,1) array([0, 2])
mintypecode (typechars, typeset='GDFgdf', default='d')
Return a minimum data type character from typeset that handles all typechars given The returned type character must be the smallest size such that an array of the returned type can handle the data from an array of type t for each t in typechars (or if typechars is an array, then its dtype.char). If the typechars does not intersect with the typeset, then default is returned. If t in typechars is not a string then t=asarray(t).dtype.char is applied.
mirr (values, finance_rate, reinvest_rate)
Modified internal rate of return Parameters ---------- values: Cash flows (must contain at least one positive and one negative value) or nan is returned. finance_rate : Interest rate paid on the cash flows reinvest_rate : Interest rate received on the cash flows upon reinvestment
msort (a)
nan_to_num (x)
Replace nan with zero and inf with large numbers. Parameters ---------- x : array_like Input data. Returns ------- out : ndarray Array with the same shape and dtype as `x`. Nan is replaced by zero, and inf (-inf) is replaced by the largest (smallest) floating point value that fits in the output dtype. Examples -------- >>> x = np.array([np.inf, -np.inf, np.nan, -128, 128]) >>> np.nan_to_num(x) array([ 1.79769313e+308, -1.79769313e+308, 0.00000000e+000, -1.28000000e+002, 1.28000000e+002])
nanargmax (a, axis=None)
Return indices of the maximum values over the given axis of 'a', ignoring NaNs. Parameters ---------- a : array-like Input data. axis : int, optional Axis along which to operate. By default flattened input is used. Returns ------- index_array : {ndarray, int} An array of indices or a single index value. See Also -------- argmax Examples -------- >>> a = np.array([[np.nan, 4], [2, 3]]) >>> np.argmax(a) 0 >>> np.nanargmax(a) 1 >>> np.nanargmax(a, axis=0) array([1, 1]) >>> np.nanargmax(a, axis=1) array([1, 0])
nanargmin (a, axis=None)
Return indices of the minimum values along the given axis of `a`, ignoring NaNs. Refer to `numpy.nanargmax` for detailed documentation.
nanmax (a, axis=None)
Find the maximum along the given axis, ignoring NaNs. Parameters ---------- a : array-like Input array. axis : {int, None}, optional Axis along which the maximum is computed. By default `a` is flattened. Returns ------- y : {ndarray, scalar} The maximum ignoring NaNs. Examples -------- >>> a = np.array([[1, 2], [3, np.nan]]) >>> np.nanmax(a) 3.0 >>> np.nanmax(a, axis=0) array([ 3., 2.]) >>> np.nanmax(a, axis=1) array([ 2., 3.])
nanmin (a, axis=None)
Find the minimum along the given axis, ignoring NaNs. Parameters ---------- a : array_like Input array. axis : int, optional Axis along which the minimum is computed. By default `a` is flattened. Returns ------- y : {ndarray, scalar} The minimum ignoring NaNs. Examples -------- >>> a = np.array([[1, 2], [3, np.nan]]) >>> np.nanmin(a) 1.0 >>> np.nanmin(a, axis=0) array([ 1., 2.]) >>> np.nanmin(a, axis=1) array([ 1., 3.])
nansum (a, axis=None)
Sum the array along the given axis, treating NaNs as zero. Parameters ---------- a : array-like Input array. axis : {int, None}, optional Axis along which the sum is computed. By default `a` is flattened. Returns ------- y : {ndarray, scalar} The sum ignoring NaNs. Examples -------- >>> np.nansum([np.nan, 1]) 1.0 >>> a = np.array([[1, 1], [1, np.nan]]) >>> np.nansum(a, axis=0) array([ 2., 1.])
ndim (a)
Return the number of dimensions of an array. Parameters ---------- a : array_like Input array. If it is not already an ndarray, a conversion is attempted. Returns ------- number_of_dimensions : int The number of dimensions in `a`. Scalars are zero-dimensional. See Also -------- ndarray.ndim : equivalent method shape : dimensions of array ndarray.shape : dimensions of array Examples -------- >>> np.ndim([[1,2,3],[4,5,6]]) 2 >>> np.ndim(np.array([[1,2,3],[4,5,6]])) 2 >>> np.ndim(1) 0
nonzero (a)
Return the indices of the elements that are non-zero. Returns a tuple of arrays, one for each dimension of `a`, containing the indices of the non-zero elements in that dimension. The corresponding non-zero values can be obtained with:: a[nonzero(a)] To group the indices by element, rather than dimension, use:: transpose(nonzero(a)) The result of this is always a 2-D array, with a row for each non-zero element. Parameters ---------- a : array_like Input array. Returns ------- tuple_of_arrays : tuple Indices of elements that are non-zero. See Also -------- flatnonzero : Return indices that are non-zero in the flattened version of the input array. Examples -------- >>> x = np.eye(3) >>> x array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) >>> np.nonzero(x) (array([0, 1, 2]), array([0, 1, 2])) >>> x[np.nonzero(x)] array([ 1., 1., 1.]) >>> np.transpose(np.nonzero(x)) array([[0, 0], [1, 1], [2, 2]])
nper (rate, pmt, pv, fv=0, when='end')
Compute the number of periods. Parameters ---------- rate : array_like Rate of interest (per period) pmt : array_like Payment pv : array_like Present value fv : array_like Future value when : array_like When payments are due ('begin' (1) or 'end' (0)) Notes ----- The number of periods ``nper`` is computed by solving the equation:: fv + pv*(1+rate)**nper + pmt*(1+rate*when)/rate * ((1+rate)**nper - 1) == 0 or, when ``rate == 0``:: fv + pv + pmt * nper == 0 Examples -------- If you only had $150 to spend as payment, how long would it take to pay-off a loan of $8,000 at 7% annual interest? >>> np.nper(0.07/12, -150, 8000) 64.073348770661852 So, over 64 months would be required to pay off the loan. The same analysis could be done with several different interest rates and/or payments and/or total amounts to produce an entire table. >>> np.nper(*(np.ogrid[0.06/12:0.071/12:0.01/12, -200:-99:100, 6000:7001:1000])) array([[[ 32.58497782, 38.57048452], [ 71.51317802, 86.37179563]], <BLANKLINE> [[ 33.07413144, 39.26244268], [ 74.06368256, 90.22989997]]])
npv (rate, values)
Net Present Value sum ( values_k / (1+rate)**k, k = 1..n)
obj2sctype (rep, default=None)
ones (shape, dtype=None, order='C')
Return a new array of given shape and type, filled with ones. Please refer to the documentation for `zeros`. See Also -------- zeros Examples -------- >>> np.ones(5) array([ 1., 1., 1., 1., 1.]) >>> np.ones((5,), dtype=np.int) array([1, 1, 1, 1, 1]) >>> np.ones((2, 1)) array([[ 1.], [ 1.]]) >>> s = (2,2) >>> np.ones(s) array([[ 1., 1.], [ 1., 1.]])
outer (a, b)
Returns the outer product of two vectors. Given two vectors, ``[a0, a1, ..., aM]`` and ``[b0, b1, ..., bN]``, the outer product becomes:: [[a0*b0 a0*b1 ... a0*bN ] [a1*b0 . [ ... . [aM*b0 aM*bN ]] Parameters ---------- a : array_like, shaped (M,) First input vector. If either of the input vectors are not 1-dimensional, they are flattened. b : array_like, shaped (N,) Second input vector. Returns ------- out : ndarray, shaped (M, N) ``out[i, j] = a[i] * b[j]`` Notes ----- The outer product of vectors is a special case of the Kronecker product. Examples -------- >>> x = np.array(['a', 'b', 'c'], dtype=object) >>> np.outer(x, [1, 2, 3]) array([[a, aa, aaa], [b, bb, bbb], [c, cc, ccc]], dtype=object)
piecewise (x, condlist, funclist, *args, **kw)
Evaluate a piecewise-defined function. Given a set of conditions and corresponding functions, evaluate each function on the input data wherever its condition is true. Parameters ---------- x : (N,) ndarray The input domain. condlist : list of M (N,)-shaped boolean arrays Each boolean array corresponds to a function in `funclist`. Wherever `condlist[i]` is True, `funclist[i](x)` is used as the output value. Each boolean array in `condlist` selects a piece of `x`, and should therefore be of the same shape as `x`. The length of `condlist` must correspond to that of `funclist`. If one extra function is given, i.e. if the length of `funclist` is M+1, then that extra function is the default value, used wherever all conditions are false. funclist : list of M or M+1 callables, f(x,*args,**kw), or values Each function is evaluated over `x` wherever its corresponding condition is True. It should take an array as input and give an array or a scalar value as output. If, instead of a callable, a value is provided then a constant function (``lambda x: value``) is assumed. args : tuple, optional Any further arguments given to `piecewise` are passed to the functions upon execution, i.e., if called ``piecewise(...,...,1,'a')``, then each function is called as ``f(x,1,'a')``. kw : dictionary, optional Keyword arguments used in calling `piecewise` are passed to the functions upon execution, i.e., if called ``piecewise(...,...,lambda=1)``, then each function is called as ``f(x,lambda=1)``. Returns ------- out : ndarray The output is the same shape and type as x and is found by calling the functions in `funclist` on the appropriate portions of `x`, as defined by the boolean arrays in `condlist`. Portions not covered by any condition have undefined values. Notes ----- This is similar to choose or select, except that functions are evaluated on elements of `x` that satisfy the corresponding condition from `condlist`. The result is:: |-- |funclist[0](x[condlist[0]]) out = |funclist[1](x[condlist[1]]) |... |funclist[n2](x[condlist[n2]]) |-- Examples -------- Define the sigma function, which is -1 for ``x < 0`` and +1 for ``x >= 0``. >>> x = np.arange(6) - 2.5 # x runs from -2.5 to 2.5 in steps of 1 >>> np.piecewise(x, [x < 0, x >= 0.5], [-1,1]) array([-1., -1., -1., 1., 1., 1.]) Define the absolute value, which is ``-x`` for ``x <0`` and ``x`` for ``x >= 0``. >>> np.piecewise(x, [x < 0, x >= 0], [lambda x: -x, lambda x: x]) array([ 2.5, 1.5, 0.5, 0.5, 1.5, 2.5])
pkgload (*packages, **options)
Load one or more packages into parent package top-level namespace. This function is intended to shorten the need to import many subpackages, say of scipy, constantly with statements such as import scipy.linalg, scipy.fftpack, scipy.etc... Instead, you can say: import scipy scipy.pkgload('linalg','fftpack',...) or scipy.pkgload() to load all of them in one call. If a name which doesn't exist in scipy's namespace is given, a warning is shown. Parameters ---------- *packages : arg-tuple the names (one or more strings) of all the modules one wishes to load into the top-level namespace. verbose= : integer verbosity level [default: -1]. verbose=-1 will suspend also warnings. force= : bool when True, force reloading loaded packages [default: False]. postpone= : bool when True, don't load packages [default: False]
place (arr, mask, vals)
Similar to putmask arr[mask] = vals but the 1D array vals has the same number of elements as the non-zero values of mask. Inverse of extract.
pmt (rate, nper, pv, fv=0, when='end')
Compute the payment. Parameters ---------- rate : array-like Rate of interest (per period) nper : array-like Number of compounding periods pv : array-like Present value fv : array-like Future value when : array-like When payments are due ('begin' (1) or 'end' (0)) Notes ----- The payment ``pmt`` is computed by solving the equation:: fv + pv*(1+rate)**nper + pmt*(1+rate*when)/rate * ((1+rate)**nper - 1) == 0 or, when ``rate == 0``:: fv + pv + pmt * nper == 0 Examples -------- What would the monthly payment need to be to pay off a $200,000 loan in 15 years at an annual interest rate of 7.5%? >>> np.pmt(0.075/12, 12*15, 200000) -1854.0247200054619 In order to pay-off (i.e. have a future-value of 0) the $200,000 obtained today, a monthly payment of $1,854.02 would be required.
poly (seq_of_zeros)
Return polynomial coefficients given a sequence of roots. Calculate the coefficients of a polynomial given the zeros of the polynomial. If a square matrix is given, then the coefficients for characteristic equation of the matrix, defined by :math:`\mathrm{det}(\mathbf{A} - \lambda \mathbf{I})`, are returned. Parameters ---------- seq_of_zeros : ndarray A sequence of polynomial roots or a square matrix. Returns ------- coefs : ndarray A sequence of polynomial coefficients representing the polynomial :math:`\mathrm{coefs}[0] x^{n-1} + \mathrm{coefs}[1] x^{n-2} + ... + \mathrm{coefs}[2] x + \mathrm{coefs}[n]` See Also -------- numpy.poly1d : A one-dimensional polynomial class. numpy.roots : Return the roots of the polynomial coefficients in p numpy.polyfit : Least squares polynomial fit Examples -------- Given a sequence of polynomial zeros, >>> b = np.roots([1, 3, 1, 5, 6]) >>> np.poly(b) array([ 1., 3., 1., 5., 6.]) Given a square matrix, >>> P = np.array([[19, 3], [-2, 26]]) >>> np.poly(P) array([ 1., -45., 500.])
polyadd (a1, a2)
Adds two polynomials represented as sequences
polyder (p, m=1)
Return the derivative of order m of a polynomial. Parameters ---------- p : poly1d or sequence Polynomial to differentiate. A sequence is interpreted as polynomial coefficients, see `poly1d`. m : int, optional Order of differentiation (default: 1) Returns ------- der : poly1d A new polynomial representing the derivative. See Also -------- polyint : Anti-derivative of a polynomial. Examples -------- The derivative of the polynomial :math:`x^3 + x^2 + x^1 + 1` is: >>> p = np.poly1d([1,1,1,1]) >>> p2 = np.polyder(p) >>> p2 poly1d([3, 2, 1]) which evaluates to: >>> p2(2.) 17.0 We can verify this, approximating the derivative with ``(f(x + h) - f(x))/h``: >>> (p(2. + 0.001) - p(2.)) / 0.001 17.007000999997857 The fourth-order derivative of a 3rd-order polynomial is zero: >>> np.polyder(p, 2) poly1d([6, 2]) >>> np.polyder(p, 3) poly1d([6]) >>> np.polyder(p, 4) poly1d([ 0.])
polydiv (u, v)
Computes q and r polynomials so that u(s) = q(s)*v(s) + r(s) and deg r < deg v.
polyfit (x, y, deg, rcond=None, full=False)
Least squares polynomial fit. Fit a polynomial ``p(x) = p[0] * x**deg + ... + p[deg]`` of degree `deg` to points `(x, y)`. Returns a vector of coefficients `p` that minimises the squared error. Parameters ---------- x : array_like, shape (M,) x-coordinates of the M sample points ``(x[i], y[i])``. y : array_like, shape (M,) or (M, K) y-coordinates of the sample points. Several data sets of sample points sharing the same x-coordinates can be fitted at once by passing in a 2D-array that contains one dataset per column. deg : int Degree of the fitting polynomial rcond : float, optional Relative condition number of the fit. Singular values smaller than this relative to the largest singular value will be ignored. The default value is len(x)*eps, where eps is the relative precision of the float type, about 2e-16 in most cases. full : bool, optional Switch determining nature of return value. When it is False (the default) just the coefficients are returned, when True diagnostic information from the singular value decomposition is also returned. Returns ------- p : ndarray, shape (M,) or (M, K) Polynomial coefficients, highest power first. If `y` was 2-D, the coefficients for `k`-th data set are in ``p[:,k]``. residuals, rank, singular_values, rcond : present only if `full` = True Residuals of the least-squares fit, the effective rank of the scaled Vandermonde coefficient matrix, its singular values, and the specified value of `rcond`. For more details, see `linalg.lstsq`. Warns ----- RankWarning The rank of the coefficient matrix in the least-squares fit is deficient. The warning is only raised if `full` = False. The warnings can be turned off by >>> import warnings >>> warnings.simplefilter('ignore', np.RankWarning) See Also -------- polyval : Computes polynomial values. linalg.lstsq : Computes a least-squares fit. scipy.interpolate.UnivariateSpline : Computes spline fits. Notes ----- The solution minimizes the squared error .. math :: E = \sum_{j=0}^k |p(x_j) - y_j|^2 in the equations:: x[0]**n * p[n] + ... + x[0] * p[1] + p[0] = y[0] x[1]**n * p[n] + ... + x[1] * p[1] + p[0] = y[1] ... x[k]**n * p[n] + ... + x[k] * p[1] + p[0] = y[k] The coefficient matrix of the coefficients `p` is a Vandermonde matrix. `polyfit` issues a `RankWarning` when the least-squares fit is badly conditioned. This implies that the best fit is not well-defined due to numerical error. The results may be improved by lowering the polynomial degree or by replacing `x` by `x` - `x`.mean(). The `rcond` parameter can also be set to a value smaller than its default, but the resulting fit may be spurious: including contributions from the small singular values can add numerical noise to the result. Note that fitting polynomial coefficients is inherently badly conditioned when the degree of the polynomial is large or the interval of sample points is badly centered. The quality of the fit should always be checked in these cases. When polynomial fits are not satisfactory, splines may be a good alternative. References ---------- .. [1] Wikipedia, "Curve fitting", http://en.wikipedia.org/wiki/Curve_fitting .. [2] Wikipedia, "Polynomial interpolation", http://en.wikipedia.org/wiki/Polynomial_interpolation Examples -------- >>> x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]) >>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0]) >>> z = np.polyfit(x, y, 3) array([ 0.08703704, -0.81349206, 1.69312169, -0.03968254]) It is convenient to use `poly1d` objects for dealing with polynomials: >>> p = np.poly1d(z) >>> p(0.5) 0.6143849206349179 >>> p(3.5) -0.34732142857143039 >>> p(10) 22.579365079365115 High-order polynomials may oscillate wildly: >>> p30 = np.poly1d(np.polyfit(x, y, 30)) /... RankWarning: Polyfit may be poorly conditioned... >>> p30(4) -0.80000000000000204 >>> p30(5) -0.99999999999999445 >>> p30(4.5) -0.10547061179440398 Illustration: >>> import matplotlib.pyplot as plt >>> xp = np.linspace(-2, 6, 100) >>> plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--') >>> plt.ylim(-2,2) >>> plt.show()
polyint (p, m=1, k=None)
Return an antiderivative (indefinite integral) of a polynomial. The returned order `m` antiderivative `P` of polynomial `p` satisfies :math:`\frac{d^m}{dx^m}P(x) = p(x)` and is defined up to `m - 1` integration constants `k`. The constants determine the low-order polynomial part .. math:: \frac{k_{m-1}}{0!} x^0 + \ldots + \frac{k_0}{(m-1)!}x^{m-1} of `P` so that :math:`P^{(j)}(0) = k_{m-j-1}`. Parameters ---------- p : poly1d or sequence Polynomial to differentiate. A sequence is interpreted as polynomial coefficients, see `poly1d`. m : int, optional Order of the antiderivative. (Default: 1) k : {None, list of `m` scalars, scalar}, optional Integration constants. They are given in the order of integration: those corresponding to highest-order terms come first. If ``None`` (default), all constants are assumed to be zero. If `m = 1`, a single scalar can be given instead of a list. See Also -------- polyder : derivative of a polynomial poly1d.integ : equivalent method Examples -------- The defining property of the antiderivative: >>> p = np.poly1d([1,1,1]) >>> P = np.polyint(p) poly1d([ 0.33333333, 0.5 , 1. , 0. ]) >>> np.polyder(P) == p True The integration constants default to zero, but can be specified: >>> P = np.polyint(p, 3) >>> P(0) 0.0 >>> np.polyder(P)(0) 0.0 >>> np.polyder(P, 2)(0) 0.0 >>> P = np.polyint(p, 3, k=[6,5,3]) >>> P poly1d([ 0.01666667, 0.04166667, 0.16666667, 3., 5., 3. ]) Note that 3 = 6 / 2!, and that the constants are given in the order of integrations. Constant of the highest-order polynomial term comes first: >>> np.polyder(P, 2)(0) 6.0 >>> np.polyder(P, 1)(0) 5.0 >>> P(0) 3.0
polymul (a1, a2)
Multiplies two polynomials represented as sequences.
polysub (a1, a2)
Subtracts two polynomials represented as sequences
polyval (p, x)
Evaluate the polynomial p at x. If p is of length N, this function returns the value: p[0]*(x**N-1) + p[1]*(x**N-2) + ... + p[N-2]*x + p[N-1] If x is a sequence then p(x) will be returned for all elements of x. If x is another polynomial then the composite polynomial p(x) will be returned. Parameters ---------- p : {array_like, poly1d} 1D array of polynomial coefficients from highest degree to zero or an instance of poly1d. x : {array_like, poly1d} A number, a 1D array of numbers, or an instance of poly1d. Returns ------- values : {array, poly1d} If either p or x is an instance of poly1d, then an instance of poly1d is returned, otherwise a 1D array is returned. In the case where x is a poly1d, the result is the composition of the two polynomials, i.e., substitution is used. See Also -------- poly1d: A polynomial class. Notes ----- Horner's method is used to evaluate the polynomial. Even so, for polynomials of high degree the values may be inaccurate due to rounding errors. Use carefully. Examples -------- >>> np.polyval([3,0,1], 5) # 3 * 5**2 + 0 * 5**1 + 1 76
ppmt (rate, per, nper, pv, fv=0.0, when='end')
prod (a, axis=None, dtype=None, out=None)
Return the product of array elements over a given axis. Parameters ---------- a : array_like Input data. axis : int, optional Axis over which the product is taken. By default, the product of all elements is calculated. dtype : data-type, optional The data-type of the returned array, as well as of the accumulator in which the elements are multiplied. By default, if `a` is of integer type, `dtype` is the default platform integer (note: if the type of `a` is unsigned, then so is `dtype`). Otherwise, the dtype is the same as that of `a`. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape as the expected output, but the type of the output values will be cast if necessary. Returns ------- product_along_axis : {ndarray, scalar}, see `dtype` parameter above. An array shaped as `a` but with the specified axis removed. Returns a reference to `out` if specified. See Also -------- ndarray.prod : equivalent method Notes ----- Arithmetic is modular when using integer types, and no error is raised on overflow. That means that, on a 32-bit platform: >>> x = np.array([536870910, 536870910, 536870910, 536870910]) >>> np.prod(x) #random 16 Examples -------- By default, calculate the product of all elements: >>> np.prod([1.,2.]) 2.0 Even when the input array is two-dimensional: >>> np.prod([[1.,2.],[3.,4.]]) 24.0 But we can also specify the axis over which to multiply: >>> np.prod([[1.,2.],[3.,4.]], axis=1) array([ 2., 12.]) If the type of `x` is unsigned, then the output type is the unsigned platform integer: >>> x = np.array([1, 2, 3], dtype=np.uint8) >>> np.prod(x).dtype == np.uint If `x` is of a signed integer type, then the output type is the default platform integer: >>> x = np.array([1, 2, 3], dtype=np.int8) >>> np.prod(x).dtype == np.int
product (a, axis=None, dtype=None, out=None)
Return the product of array elements over a given axis. Refer to `numpy.prod` for full documentation. See Also -------- prod : equivalent function
ptp (a, axis=None, out=None)
Peak to peak (maximum - minimum) value along a given axis. Parameters ---------- a : array_like Input values. axis : int, optional Axis along which to find the peaks. By default, flatten the array. out : array_like Alternative output array in which to place the result. It must have the same shape and buffer length as the expected output, but the type of the output values will be cast if necessary. Returns ------- ptp : ndarray A new array holding the result, unless `out` was specified, in which case a reference to `out` is returned. Examples -------- >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]]) >>> np.ptp(x, axis=0) array([2, 2]) >>> np.ptp(x, axis=1) array([1, 1])
put (a, ind, v, mode='raise')
Set a.flat[n] = v[n] for all n in ind. If `v` is shorter than `ind`, it will repeat. Parameters ---------- a : array_like (contiguous) Target array. ind : array_like Target indices, interpreted as integers. v : array_like Values to place in `a` at target indices. mode : {'raise', 'wrap', 'clip'}, optional Specifies how out-of-bounds indices will behave. * 'raise' -- raise an error * 'wrap' -- wrap around * 'clip' -- clip to the range Notes ----- If `v` is shorter than `mask` it will be repeated as necessary. In particular `v` can be a scalar or length 1 array. The routine put is the equivalent of the following (although the loop is in C for speed): :: ind = array(indices, copy=False) v = array(values, copy=False).astype(a.dtype) for i in ind: a.flat[i] = v[i] Examples -------- >>> x = np.arange(5) >>> np.put(x,[0,2,4],[-1,-2,-3]) >>> print x [-1 1 -2 3 -3]
pv (rate, nper, pmt, fv=0.0, when='end')
Compute the present value. Parameters ---------- rate : array-like Rate of interest (per period) nper : array-like Number of compounding periods pmt : array-like Payment fv : array-like Future value when : array-like When payments are due ('begin' (1) or 'end' (0)) Notes ----- The present value ``pv`` is computed by solving the equation:: fv + pv*(1+rate)**nper + pmt*(1+rate*when)/rate * ((1+rate)**nper - 1) = 0 or, when ``rate = 0``:: fv + pv + pmt * nper = 0
rank (a)
Return the number of dimensions of an array. If `a` is not already an array, a conversion is attempted. Scalars are zero dimensional. Parameters ---------- a : array_like Array whose number of dimensions is desired. If `a` is not an array, a conversion is attempted. Returns ------- number_of_dimensions : int The number of dimensions in the array. See Also -------- ndim : equivalent function ndarray.ndim : equivalent property shape : dimensions of array ndarray.shape : dimensions of array Notes ----- In the old Numeric package, `rank` was the term used for the number of dimensions, but in Numpy `ndim` is used instead. Examples -------- >>> np.rank([1,2,3]) 1 >>> np.rank(np.array([[1,2,3],[4,5,6]])) 2 >>> np.rank(1) 0
rate (nper, pmt, pv, fv, when='end', guess=0.10000000000000001, tol=9.9999999999999995e-07, maxiter=100)
Compute the rate of interest per period. Parameters ---------- nper : array_like Number of compounding periods pmt : array_like Payment pv : array_like Present value fv : array_like Future value when : array_like, optional When payments are due ('begin' (1) or 'end' (0)) guess : float, optional Starting guess for solving the rate of interest tol : float, optional Required tolerance for the solution maxiter : int, optional Maximum iterations in finding the solution Notes ----- The rate of interest ``rate`` is computed by solving the equation:: fv + pv*(1+rate)**nper + pmt*(1+rate*when)/rate * ((1+rate)**nper - 1) = 0 or, if ``rate = 0``:: fv + pv + pmt * nper = 0
ravel (a, order='C')
Return a flattened array. A 1-d array, containing the elements of the input, is returned. A copy is made only if needed. Parameters ---------- a : array_like Input array. The elements in `a` are read in the order specified by `order`, and packed as a 1-dimensional array. order : {'C','F'}, optional The elements of `a` are read in this order. It can be either 'C' for row-major order, or `F` for column-major order. By default, row-major order is used. Returns ------- 1d_array : ndarray Output of the same dtype as `a`, and of shape ``(a.size(),)`` (or ``(np.prod(a.shape),)``). See Also -------- ndarray.flat : 1-D iterator over an array. ndarray.flatten : 1-D array copy of the elements of an array in row-major order. Notes ----- In row-major order, the row index varies the slowest, and the column index the quickest. This can be generalised to multiple dimensions, where row-major order implies that the index along the first axis varies slowest, and the index along the last quickest. The opposite holds for Fortran-, or column-major, mode. Examples -------- If an array is in C-order (default), then `ravel` is equivalent to ``reshape(-1)``: >>> x = np.array([[1, 2, 3], [4, 5, 6]]) >>> print x.reshape(-1) [1 2 3 4 5 6] >>> print np.ravel(x) [1 2 3 4 5 6] When flattening using Fortran-order, however, we see >>> print np.ravel(x, order='F') [1 4 2 5 3 6]
real (val)
Return the real part of the elements of the array. Parameters ---------- val : {array_like, scalar} Input array. Returns ------- out : ndarray If `val` is real, the type of `val` is used for the output. If `val` has complex elements, the returned type is float. See Also -------- real_if_close, imag, angle Examples -------- >>> a = np.array([1+2j,3+4j,5+6j]) >>> a.real array([ 1., 3., 5.]) >>> a.real = 9 >>> a array([ 9.+2.j, 9.+4.j, 9.+6.j]) >>> a.real = np.array([9,8,7]) >>> a array([ 9.+2.j, 8.+4.j, 7.+6.j])
real_if_close (a, tol=100)
If complex input returns a real array if complex parts are close to zero. "Close to zero" is defined as `tol` * (machine epsilon of the type for `a`). Parameters ---------- a : {array_like, scalar} Input array. tol : scalar Tolerance for the complex part of the elements in the array. Returns ------- out : ndarray If `a` is real, the type of `a` is used for the output. If `a` has complex elements, the returned type is float. See Also -------- real, imag, angle Notes ----- Machine epsilon varies from machine to machine and between data types but Python floats on most platforms have a machine epsilon equal to 2.2204460492503131e-16. You can use 'np.finfo(np.float).eps' to print out the machine epsilon for floats.
repeat (a, repeats, axis=None)
Repeat elements of an array. Parameters ---------- a : array_like Input array. repeats : {int, array of ints} The number of repetitions for each element. `repeats` is broadcasted to fit the shape of the given axis. axis : int, optional The axis along which to repeat values. By default, use the flattened input array, and return a flat output array. Returns ------- repeated_array : ndarray Output array which has the same shape as `a`, except along the given axis. See Also -------- tile : Tile an array. Examples -------- >>> x = np.array([[1,2],[3,4]]) >>> np.repeat(x, 2) array([1, 1, 2, 2, 3, 3, 4, 4]) >>> np.repeat(x, 3, axis=1) array([[1, 1, 1, 2, 2, 2], [3, 3, 3, 4, 4, 4]]) >>> np.repeat(x, [1, 2], axis=0) array([[1, 2], [3, 4], [3, 4]])
require (a, dtype=None, requirements=None)
Return an ndarray of the provided type that satisfies requirements. This function is useful to be sure that an array with the correct flags is returned for passing to compiled code (perhaps through ctypes). Parameters ---------- a : array-like The object to be converted to a type-and-requirement satisfying array dtype : data-type The required data-type (None is the default data-type -- float64) requirements : list of strings The requirements list can be any of the following * 'ENSUREARRAY' ('E') - ensure that a base-class ndarray * 'F_CONTIGUOUS' ('F') - ensure a Fortran-contiguous array * 'C_CONTIGUOUS' ('C') - ensure a C-contiguous array * 'ALIGNED' ('A') - ensure a data-type aligned array * 'WRITEABLE' ('W') - ensure a writeable array * 'OWNDATA' ('O') - ensure an array that owns its own data Notes ----- The returned array will be guaranteed to have the listed requirements by making a copy if needed.
reshape (a, newshape, order='C')
Returns an array containing the data of a, but with a new shape. Parameters ---------- a : ndarray Array to be reshaped. newshape : {tuple, int} The new shape should be compatible with the original shape. If an integer, then the result will be a 1-D array of that length. order : {'C', 'F'}, optional Determines whether the array data should be viewed as in C (row-major) order or FORTRAN (column-major) order. Returns ------- reshaped_array : ndarray This will be a new view object if possible; otherwise, it will be a copy. See Also -------- ndarray.reshape : Equivalent method. Examples -------- >>> a = np.array([[1,2], [3,4]]) >>> a.reshape(4) array([1, 2, 3, 4]) >>> a.reshape(4, order='F') array([1, 3, 2, 4]) >>> a.reshape((4,1)) array([[1], [2], [3], [4]])
resize (a, new_shape)
Return a new array with the specified shape. If the new array is larger than the original array, then the new array is filled with repeated copied of `a`. Note that this behavior is different from a.resize(new_shape) which fills with zeros instead of repeated copies of `a`. Parameters ---------- a : array_like Array to be resized. new_shape : {tuple, int} Shape of resized array. Returns ------- reshaped_array : ndarray The new array is formed from the data in the old array, repeated if necessary to fill out the required number of elements. See Also -------- ndarray.resize : resize an array in-place. Examples -------- >>> a=np.array([[0,1],[2,3]]) >>> np.resize(a,(1,4)) array([[0, 1, 2, 3]]) >>> np.resize(a,(2,4)) array([[0, 1, 2, 3], [0, 1, 2, 3]])
restoredot ()
Restore `dot`, `vdot`, and `innerproduct` to the default non-BLAS implementations. Typically, the user will only need to call this when troubleshooting and installation problem, reproducing the conditions of a build without an accelerated BLAS, or when being very careful about benchmarking linear algebra operations. See Also -------- alterdot : `restoredot` undoes the effects of `alterdot`.
roll (a, shift, axis=None)
Roll array elements along a given axis. Elements that roll beyond the last position are re-introduced at the first. Parameters ---------- a : array_like Input array. shift : int The number of places by which elements are shifted. axis : int, optional The axis along which elements are shifted. By default, the array is flattened before shifting, after which the original shape is restored. Returns ------- res : ndarray Output array, with the same shape as `a`. See Also -------- rollaxis : Roll the specified axis backwards, until it lies in a given position. Examples -------- >>> x = np.arange(10) >>> np.roll(x, 2) array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7]) >>> x2 = np.reshape(x, (2,5)) >>> x2 array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) >>> np.roll(x2, 1) array([[9, 0, 1, 2, 3], [4, 5, 6, 7, 8]]) >>> np.roll(x2, 1, axis=0) array([[5, 6, 7, 8, 9], [0, 1, 2, 3, 4]]) >>> np.roll(x2, 1, axis=1) array([[4, 0, 1, 2, 3], [9, 5, 6, 7, 8]])
rollaxis (a, axis, start=0)
Roll the specified axis backwards, until it lies in a given position. Parameters ---------- a : ndarray Input array. axis : int The axis to roll backwards. The positions of the other axes do not change relative to one another. start : int, optional The axis is rolled until it lies before this position. Returns ------- res : ndarray Output array. See Also -------- roll : Roll the elements of an array by a number of positions along a given axis. Examples -------- >>> a = np.ones((3,4,5,6)) >>> np.rollaxis(a, 3, 1).shape (3, 6, 4, 5) >>> np.rollaxis(a, 2).shape (5, 3, 4, 6) >>> np.rollaxis(a, 1, 4).shape (3, 5, 6, 4)
roots (p)
Return the roots of a polynomial with coefficients given in p. The values in the rank-1 array `p` are coefficients of a polynomial. If the length of `p` is n+1 then the polynomial is described by p[0] * x**n + p[1] * x**(n-1) + ... + p[n-1]*x + p[n] Parameters ---------- p : (N,) array_like Rank-1 array of polynomial co-efficients. Returns ------- out : ndarray An array containing the complex roots of the polynomial. Raises ------ ValueError: When `p` cannot be converted to a rank-1 array. Examples -------- >>> coeff = [3.2, 2, 1] >>> print np.roots(coeff) [-0.3125+0.46351241j -0.3125-0.46351241j]
rot90 (m, k=1)
Rotate an array by 90 degrees in the counter-clockwise direction. The first two dimensions are rotated; therefore, the array must be at least 2-D. Parameters ---------- m : array_like Array of two or more dimensions. k : integer Number of times the array is rotated by 90 degrees. Returns ------- y : ndarray Rotated array. See Also -------- fliplr : Flip an array horizontally. flipud : Flip an array vertically. Examples -------- >>> m = np.array([[1,2],[3,4]], int) >>> m array([[1, 2], [3, 4]]) >>> np.rot90(m) array([[2, 4], [1, 3]]) >>> np.rot90(m, 2) array([[4, 3], [2, 1]])
round_ (a, decimals=0, out=None)
Round an array to the given number of decimals. Refer to `around` for full documentation. See Also -------- around : equivalent function
round_ (a, decimals=0, out=None)
Round an array to the given number of decimals. Refer to `around` for full documentation. See Also -------- around : equivalent function
vstack (tup)
Stack arrays vertically. `vstack` can be used to rebuild arrays divided by `vsplit`. Parameters ---------- tup : sequence of arrays Tuple containing arrays to be stacked. The arrays must have the same shape along all but the first axis. See Also -------- array_split : Split an array into a list of multiple sub-arrays of near-equal size. split : Split array into a list of multiple sub-arrays of equal size. vsplit : Split array into a list of multiple sub-arrays vertically. dsplit : Split array into a list of multiple sub-arrays along the 3rd axis (depth). concatenate : Join arrays together. hstack : Stack arrays in sequence horizontally (column wise). dstack : Stack arrays in sequence depth wise (along third dimension). Examples -------- >>> a = np.array([1, 2, 3]) >>> b = np.array([2, 3, 4]) >>> np.vstack((a,b)) array([[1, 2, 3], [2, 3, 4]]) >>> a = np.array([[1], [2], [3]]) >>> b = np.array([[2], [3], [4]]) >>> np.vstack((a,b)) array([[1], [2], [3], [2], [3], [4]])
safe_eval (source)
Protected string evaluation. Evaluate a string containing a Python literal expression without allowing the execution of arbitrary non-literal code. Parameters ---------- source : str Returns ------- obj : object Raises ------ SyntaxError If the code has invalid Python syntax, or if it contains non-literal code. Examples -------- >>> from numpy.lib.utils import safe_eval >>> safe_eval('1') 1 >>> safe_eval('[1, 2, 3]') [1, 2, 3] >>> safe_eval('{"foo": ("bar", 10.0)}') {'foo': ('bar', 10.0)} >>> safe_eval('import os') Traceback (most recent call last): ... SyntaxError: invalid syntax >>> safe_eval('open("/home/user/.ssh/id_dsa").read()') Traceback (most recent call last): ... SyntaxError: Unsupported source construct: compiler.ast.CallFunc >>> safe_eval('dict') Traceback (most recent call last): ... SyntaxError: Unknown name: dict
save (file, arr)
Save an array to a binary file in NumPy format. Parameters ---------- f : file or string File or filename to which the data is saved. If the filename does not already have a ``.npy`` extension, it is added. x : array_like Array data. Examples -------- >>> from tempfile import TemporaryFile >>> outfile = TemporaryFile() >>> x = np.arange(10) >>> np.save(outfile, x) >>> outfile.seek(0) >>> np.load(outfile) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
savetxt (fname, X, fmt='%.18e', delimiter=' ')
Save an array to file. Parameters ---------- fname : filename or a file handle If the filename ends in .gz, the file is automatically saved in compressed gzip format. The load() command understands gzipped files transparently. X : array_like Data. fmt : string or sequence of strings A single format (%10.5f), a sequence of formats, or a multi-format string, e.g. 'Iteration %d -- %10.5f', in which case delimiter is ignored. delimiter : str Character separating columns. Notes ----- Further explanation of the `fmt` parameter (``%[flag]width[.precision]specifier``): flags: ``-`` : left justify ``+`` : Forces to preceed result with + or -. ``0`` : Left pad the number with zeros instead of space (see width). width: Minimum number of characters to be printed. The value is not truncated if it has more characters. precision: - For integer specifiers (eg. ``d,i,o,x``), the minimum number of digits. - For ``e, E`` and ``f`` specifiers, the number of digits to print after the decimal point. - For ``g`` and ``G``, the maximum number of significant digits. - For ``s``, the maximum number of characters. specifiers: ``c`` : character ``d`` or ``i`` : signed decimal integer ``e`` or ``E`` : scientific notation with ``e`` or ``E``. ``f`` : decimal floating point ``g,G`` : use the shorter of ``e,E`` or ``f`` ``o`` : signed octal ``s`` : string of characters ``u`` : unsigned decimal integer ``x,X`` : unsigned hexadecimal integer This is not an exhaustive specification. Examples -------- >>> savetxt('test.out', x, delimiter=',') # X is an array >>> savetxt('test.out', (x,y,z)) # x,y,z equal sized 1D arrays >>> savetxt('test.out', x, fmt='%1.4e') # use exponential notation
savez (file, *args, **kwds)
Save several arrays into an .npz file format which is a zipped-archive of arrays If keyword arguments are given, then filenames are taken from the keywords. If arguments are passed in with no keywords, then stored file names are arr_0, arr_1, etc.
sctype2char (sctype)
searchsorted (a, v, side='left')
Find indices where elements should be inserted to maintain order. Find the indices into a sorted array `a` such that, if the corresponding elements in `v` were inserted before the indices, the order of `a` would be preserved. Parameters ---------- a : 1-D array_like of shape (N,) Input array, sorted in ascending order. v : array_like Values to insert into `a`. side : {'left', 'right'}, optional If 'left', the index of the first suitable location found is given. If 'right', return the last such index. If there is no suitable index, return either 0 or N (where N is the length of `a`). Returns ------- indices : array of ints Array of insertion points with the same shape as `v`. See Also -------- sort : In-place sort. histogram : Produce histogram from 1-D data. Notes ----- Binary search is used to find the required insertion points. Examples -------- >>> np.searchsorted([1,2,3,4,5], 3) 2 >>> np.searchsorted([1,2,3,4,5], 3, side='right') 3 >>> np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3]) array([0, 5, 1, 2])
select (condlist, choicelist, default=0)
Return an array drawn from elements in choicelist, depending on conditions. Parameters ---------- condlist : list of N boolean arrays of length M The conditions C_0 through C_(N-1) which determine from which vector the output elements are taken. choicelist : list of N arrays of length M Th vectors V_0 through V_(N-1), from which the output elements are chosen. Returns ------- output : 1-dimensional array of length M The output at position m is the m-th element of the first vector V_n for which C_n[m] is non-zero. Note that the output depends on the order of conditions, since the first satisfied condition is used. Notes ----- Equivalent to: :: output = [] for m in range(M): output += [V[m] for V,C in zip(values,cond) if C[m]] or [default]
set_printoptions (precision=None, threshold=None, edgeitems=None, linewidth=None, suppress=None, nanstr=None, infstr=None)
Set printing options. These options determine the way floating point numbers, arrays and other NumPy objects are displayed. Parameters ---------- precision : int Number of digits of precision for floating point output (default 8). threshold : int Total number of array elements which trigger summarization rather than full repr (default 1000). edgeitems : int Number of array items in summary at beginning and end of each dimension (default 3). linewidth : int The number of characters per line for the purpose of inserting line breaks (default 75). suppress : bool Whether or not suppress printing of small floating point values using scientific notation (default False). nanstr : string String representation of floating point not-a-number (default nan). infstr : string String representation of floating point infinity (default inf). Examples -------- Floating point precision can be set: >>> np.set_printoptions(precision=4) >>> print np.array([1.123456789]) [ 1.1235] Long arrays can be summarised: >>> np.set_printoptions(threshold=5) >>> print np.arange(10) [0 1 2 ..., 7 8 9] Small results can be suppressed: >>> eps = np.finfo(float).eps >>> x = np.arange(4.) >>> x**2 - (x + eps)**2 array([ -4.9304e-32, -4.4409e-16, 0.0000e+00, 0.0000e+00]) >>> np.set_printoptions(suppress=True) >>> x**2 - (x + eps)**2 array([-0., -0., 0., 0.])
setbufsize (size)
Set the size of the buffer used in ufuncs.
setdiff1d (ar1, ar2)
Set difference of 1D arrays with unique elements. Use unique1d() to generate arrays with only unique elements to use as inputs to this function. Parameters ---------- ar1 : array Input array. ar2 : array Input comparison array. Returns ------- difference : array The values in ar1 that are not in ar2. See Also -------- numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays.
seterr (all=None, divide=None, over=None, under=None, invalid=None)
Set how floating-point errors are handled. Valid values for each type of error are the strings "ignore", "warn", "raise", and "call". Returns the old settings. If 'all' is specified, values that are not otherwise specified will be set to 'all', otherwise they will retain their old values. Note that operations on integer scalar types (such as int16) are handled like floating point, and are affected by these settings. Example: >>> seterr(over='raise') # doctest: +SKIP {'over': 'ignore', 'divide': 'ignore', 'invalid': 'ignore', 'under': 'ignore'} >>> seterr(all='warn', over='raise') # doctest: +SKIP {'over': 'raise', 'divide': 'ignore', 'invalid': 'ignore', 'under': 'ignore'} >>> int16(32000) * int16(3) # doctest: +SKIP Traceback (most recent call last): File "<stdin>", line 1, in ? FloatingPointError: overflow encountered in short_scalars >>> seterr(all='ignore') # doctest: +SKIP {'over': 'ignore', 'divide': 'ignore', 'invalid': 'ignore', 'under': 'ignore'}
seterrcall (func)
Set the floating-point error callback function or log object. There are two ways to capture floating-point error messages. The first is to set the error-handler to 'call', using `seterr`. Then, set the function to call using this function. The second is to set the error-handler to `log`, using `seterr`. Floating-point errors then trigger a call to the 'write' method of the provided object. Parameters ---------- log_func_or_obj : callable f(err, flag) or object with write method Function to call upon floating-point errors ('call'-mode) or object whose 'write' method is used to log such message ('log'-mode). The call function takes two arguments. The first is the type of error (one of "divide", "over", "under", or "invalid"), and the second is the status flag. The flag is a byte, whose least-significant bits indicate the status:: [0 0 0 0 invalid over under invalid] In other words, ``flags = divide + 2*over + 4*under + 8*invalid``. If an object is provided, it's write method should take one argument, a string. Returns ------- h : callable or log instance The old error handler. Examples -------- Callback upon error: >>> def err_handler(type, flag): print "Floating point error (%s), with flag %s" % (type, flag) ... >>> saved_handler = np.seterrcall(err_handler) >>> save_err = np.seterr(all='call') >>> np.array([1,2,3])/0.0 Floating point error (divide by zero), with flag 1 array([ Inf, Inf, Inf]) >>> np.seterrcall(saved_handler) >>> np.seterr(**save_err) Log error message: >>> class Log(object): def write(self, msg): print "LOG: %s" % msg ... >>> log = Log() >>> saved_handler = np.seterrcall(log) >>> save_err = np.seterr(all='log') >>> np.array([1,2,3])/0.0 LOG: Warning: divide by zero encountered in divide >>> np.seterrcall(saved_handler) >>> np.seterr(**save_err)
setmember1d (ar1, ar2)
Return a boolean array set True where first element is in second array. Boolean array is the shape of `ar1` containing True where the elements of `ar1` are in `ar2` and False otherwise. Use unique1d() to generate arrays with only unique elements to use as inputs to this function. Parameters ---------- ar1 : array Input array. ar2 : array Input array. Returns ------- mask : bool-array The values ar1[mask] are in ar2. See Also -------- numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays.
setxor1d (ar1, ar2)
Set exclusive-or of 1D arrays with unique elements. Use unique1d() to generate arrays with only unique elements to use as inputs to this function. Parameters ---------- ar1 : array Input array. ar2 : array Input array. Returns ------- xor : array The values that are only in one, but not both, of the input arrays. See Also -------- numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays.
shape (a)
Return the shape of an array. Parameters ---------- a : array_like Input array. Returns ------- shape : tuple The elements of the tuple give the lengths of the corresponding array dimensions. See Also -------- ndarray.shape : array method Examples -------- >>> np.shape(np.eye(3)) (3, 3) >>> np.shape([[1,2]]) (1, 2) >>> np.shape([0]) (1,) >>> np.shape(0) () >>> x = np.array([(1,2),(3,4)], dtype=[('x', 'i4'), ('y', 'i4')]) >>> np.shape(x) (2,) >>> x.shape (2,)
show ()
sinc (x)
Return the sinc function. The sinc function is :math:`\sin(\pi x)/(\pi x)`. Parameters ---------- x : ndarray Array (possibly multi-dimensional) of values for which to to calculate ``sinc(x)``. Returns ------- out : ndarray ``sinc(x)``, which has the same shape as the input. Notes ----- ``sinc(0)`` is the limit value 1. The name sinc is short for "sine cardinal" or "sinus cardinalis". The sinc function is used in various signal processing applications, including in anti-aliasing, in the construction of a Lanczos resampling filter, and in interpolation. For bandlimited interpolation of discrete-time signals, the ideal interpolation kernel is proportional to the sinc function. References ---------- .. [1] Weisstein, Eric W. "Sinc Function." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/SincFunction.html .. [2] Wikipedia, "Sinc function", http://en.wikipedia.org/wiki/Sinc_function Examples -------- >>> x = np.arange(-20., 21.)/5. >>> np.sinc(x) array([ -3.89804309e-17, -4.92362781e-02, -8.40918587e-02, -8.90384387e-02, -5.84680802e-02, 3.89804309e-17, 6.68206631e-02, 1.16434881e-01, 1.26137788e-01, 8.50444803e-02, -3.89804309e-17, -1.03943254e-01, -1.89206682e-01, -2.16236208e-01, -1.55914881e-01, 3.89804309e-17, 2.33872321e-01, 5.04551152e-01, 7.56826729e-01, 9.35489284e-01, 1.00000000e+00, 9.35489284e-01, 7.56826729e-01, 5.04551152e-01, 2.33872321e-01, 3.89804309e-17, -1.55914881e-01, -2.16236208e-01, -1.89206682e-01, -1.03943254e-01, -3.89804309e-17, 8.50444803e-02, 1.26137788e-01, 1.16434881e-01, 6.68206631e-02, 3.89804309e-17, -5.84680802e-02, -8.90384387e-02, -8.40918587e-02, -4.92362781e-02, -3.89804309e-17]) >>> import matplotlib.pyplot as plt >>> plt.plot(x, sinc(x)) >>> plt.title("Sinc Function") >>> plt.ylabel("Amplitude") >>> plt.xlabel("X") >>> plt.show() It works in 2-D as well: >>> x = np.arange(-200., 201.)/50. >>> xx = np.outer(x, x) >>> plt.imshow(sinc(xx))
size (a, axis=None)
Return the number of elements along a given axis. Parameters ---------- a : array_like Input data. axis : int, optional Axis along which the elements are counted. By default, give the total number of elements. Returns ------- element_count : int Number of elements along the specified axis. See Also -------- shape : dimensions of array ndarray.shape : dimensions of array ndarray.size : number of elements in array Examples -------- >>> a = np.array([[1,2,3],[4,5,6]]) >>> np.size(a) 6 >>> np.size(a,1) 3 >>> np.size(a,0) 2
sometrue (a, axis=None, out=None)
Check whether some values are true. Refer to `any` for full documentation. See Also -------- any : equivalent function
sort (a, axis=-1, kind='quicksort', order=None)
Return a sorted copy of an array. Parameters ---------- a : array-like Array to be sorted. axis : int, optional Axis along which to sort. If not specified, the flattened array is used. kind : {'quicksort', 'mergesort', 'heapsort'}, optional Sorting algorithm. order : list, optional When `a` is an ndarray with fields defined, this argument specifies which fields to compare first, second, etc. Not all fields need be specified. Returns ------- sorted_array : ndarray Array of same type and shape as `a`. See Also -------- argsort : Indirect sort. lexsort : Indirect stable sort on multiple keys. searchsorted : Find keys in sorted array. Notes ----- The various sorting algorithms are characterized by their average speed, worst case performance, work space size, and whether they are stable. A stable sort keeps items with the same key in the same relative order. The three available algorithms have the following properties: =========== ======= ============= ============ ======= kind speed worst case work space stable =========== ======= ============= ============ ======= 'quicksort' 1 O(n^2) 0 no 'mergesort' 2 O(n*log(n)) ~n/2 yes 'heapsort' 3 O(n*log(n)) 0 no =========== ======= ============= ============ ======= All the sort algorithms make temporary copies of the data when sorting along any but the last axis. Consequently, sorting along the last axis is faster and uses less space than sorting along any other axis. Examples -------- >>> a=np.array([[1,4],[3,1]]) >>> a.sort(1) >>> a array([[1, 4], [1, 3]]) >>> a.sort(0) >>> a array([[1, 3], [1, 4]])
sort_complex (a)
Sort a complex array using the real part first, then the imaginary part. Parameters ---------- a : array_like Input array Returns ------- out : complex ndarray Always returns a sorted complex array.
source (object, output=', mode 'w' at 0x2aaaaaabf198>)
Print or write to a file the source code for a Numpy object. Parameters ---------- object : numpy object Input object. output : file object, optional If `output` not supplied then source code is printed to screen (sys.stdout). File object must be created with either write 'w' or append 'a' modes.
split (ary, indices_or_sections, axis=0)
Split an array into multiple sub-arrays of equal size. Parameters ---------- ary : ndarray Array to be divided into sub-arrays. indices_or_sections: integer or 1D array If `indices_or_sections` is an integer, N, the array will be divided into N equal arrays along `axis`. If such a split is not possible, an error is raised. If `indices_or_sections` is a 1D array of sorted integers, the entries indicate where along `axis` the array is split. For example, ``[2, 3]`` would, for ``axis = 0``, result in - ary[:2] - ary[2:3] - ary[3:] If an index exceeds the dimension of the array along `axis`, an empty sub-array is returned correspondingly. axis : integer, optional The axis along which to split. Default is 0. Returns ------- sub-arrays : list A list of sub-arrays. Raises ------ ValueError If `indices_or_sections` is given as an integer, but a split does not result in equal division. See Also -------- array_split : Split an array into multiple sub-arrays of equal or near-equal size. Does not raise an exception if an equal division cannot be made. hsplit : Split array into multiple sub-arrays horizontally (column-wise). vsplit : Split array into multiple sub-arrays vertically (row wise). dsplit : Split array into multiple sub-arrays along the 3rd axis (depth). concatenate : Join arrays together. hstack : Stack arrays in sequence horizontally (column wise). vstack : Stack arrays in sequence vertically (row wise). dstack : Stack arrays in sequence depth wise (along third dimension). Examples -------- >>> x = np.arange(9.0) >>> np.split(x, 3) [array([ 0., 1., 2.]), array([ 3., 4., 5.]), array([ 6., 7., 8.])] >>> x = np.arange(8.0) >>> np.split(x, [3, 5, 6, 10]) <BLANKLINE> [array([ 0., 1., 2.]), array([ 3., 4.]), array([ 5.]), array([ 6., 7.]), array([], dtype=float64)]
squeeze (a)
Remove single-dimensional entries from the shape of an array. Parameters ---------- a : array-like Input data. Returns ------- squeezed : ndarray The input array, but with with all dimensions of length 1 removed. Whenever possible, a view on `a` is returned. Examples -------- >>> x = np.array([[[0], [1], [2]]]) >>> x.shape (1, 3, 1) >>> np.squeeze(x).shape (3,)
std (a, axis=None, dtype=None, out=None, ddof=0)
Compute the standard deviation along the specified axis. Returns the standard deviation, a measure of the spread of a distribution, of the array elements. The standard deviation is computed for the flattened array by default, otherwise over the specified axis. Parameters ---------- a : array_like Calculate the standard deviation of these values. axis : int, optional Axis along which the standard deviation is computed. The default is to compute the standard deviation of the flattened array. dtype : dtype, optional Type to use in computing the standard deviation. For arrays of integer type the default is float64, for arrays of float types it is the same as the array type. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape as the expected output but the type (of the calculated values) will be cast if necessary. ddof : int, optional Means Delta Degrees of Freedom. The divisor used in calculations is ``N - ddof``, where ``N`` represents the number of elements. By default `ddof` is zero (biased estimate). Returns ------- standard_deviation : {ndarray, scalar}; see dtype parameter above. If `out` is None, return a new array containing the standard deviation, otherwise return a reference to the output array. See Also -------- numpy.var : Variance numpy.mean : Average Notes ----- The standard deviation is the square root of the average of the squared deviations from the mean, i.e., ``var = sqrt(mean(abs(x - x.mean())**2))``. The mean is normally calculated as ``x.sum() / N``, where ``N = len(x)``. If, however, `ddof` is specified, the divisor ``N - ddof`` is used instead. Note that, for complex numbers, std takes the absolute value before squaring, so that the result is always real and nonnegative. Examples -------- >>> a = np.array([[1, 2], [3, 4]]) >>> np.std(a) 1.1180339887498949 >>> np.std(a, 0) array([ 1., 1.]) >>> np.std(a, 1) array([ 0.5, 0.5])
sum (a, axis=None, dtype=None, out=None)
Return the sum of array elements over a given axis. Parameters ---------- a : array_like Elements to sum. axis : integer, optional Axis over which the sum is taken. By default `axis` is None, and all elements are summed. dtype : dtype, optional The type of the returned array and of the accumulator in which the elements are summed. By default, the dtype of `a` is used. An exception is when `a` has an integer type with less precision than the default platform integer. In that case, the default platform integer is used instead. out : ndarray, optional Array into which the output is placed. By default, a new array is created. If `out` is given, it must be of the appropriate shape (the shape of `a` with `axis` removed, i.e., ``numpy.delete(a.shape, axis)``). Its type is preserved. Returns ------- sum_along_axis : ndarray or scalar An array with the same shape as `a`, with the specified axis removed. If `a` is a 0-d array, or if `axis` is None, a scalar is returned. If an output array is specified, a reference to `out` is returned. See Also -------- ndarray.sum : equivalent method Notes ----- Arithmetic is modular when using integer types, and no error is raised on overflow. Examples -------- >>> np.sum([0.5, 1.5]) 2.0 >>> np.sum([0.5, 1.5], dtype=np.int32) 1 >>> np.sum([[0, 1], [0, 5]]) 6 >>> np.sum([[0, 1], [0, 5]], axis=1) array([1, 5]) If the accumulator is too small, overflow occurs: >>> np.ones(128, dtype=np.int8).sum(dtype=np.int8) -128
swapaxes (a, axis1, axis2)
Interchange two axes of an array. Parameters ---------- a : array_like Input array. axis1 : int First axis. axis2 : int Second axis. Returns ------- a_swapped : ndarray If `a` is an ndarray, then a view on `a` is returned, otherwise a new array is created. Examples -------- >>> x = np.array([[1,2,3]]) >>> np.swapaxes(x,0,1) array([[1], [2], [3]]) >>> x = np.array([[[0,1],[2,3]],[[4,5],[6,7]]]) >>> x array([[[0, 1], [2, 3]], <BLANKLINE> [[4, 5], [6, 7]]]) >>> np.swapaxes(x,0,2) array([[[0, 4], [2, 6]], <BLANKLINE> [[1, 5], [3, 7]]])
take (a, indices, axis=None, out=None, mode='raise')
Take elements from an array along a given axis. This function does the same thing as "fancy" indexing (indexing arrays using arrays); however, it can be easier to use if you need to specify a given axis. Parameters ---------- a : ndarray The source array. indices : int array The indices of the values to extract. axis : int, optional The axis over which to select values. By default, the flattened input array is used. out : ndarray, optional If provided, the result will be placed in this array. It should be of the appropriate shape and dtype. mode : {'raise', 'wrap', 'clip'}, optional Specifies how out-of-bounds indices will behave. 'raise' -- raise an error 'wrap' -- wrap around 'clip' -- clip to the range Returns ------- subarray : ndarray The returned array has the same type as `a`. See Also -------- ndarray.take : equivalent method
tensordot (a, b, axes=2)
Returns the tensor dot product for (ndim >= 1) arrays along specified axes. The first element of the sequence determines the axis or axes in `a` to sum over, and the second element in `axes` argument sequence determines the axis or axes in `b` to sum over. Parameters ---------- a : array_like Input array. b : array_like Input array. axes : shape tuple Axes to be summed over. See Also -------- dot Notes ----- r_{xxx, yyy} = \sum_k a_{xxx,k} b_{k,yyy} When there is more than one axis to sum over, the corresponding arguments to axes should be sequences of the same length with the first axis to sum over given first in both sequences, the second axis second, and so forth. If the `axes` argument is an integer, N, then the last N dimensions of `a` and first N dimensions of `b` are summed over. Examples -------- >>> a = np.arange(60.).reshape(3,4,5) >>> b = np.arange(24.).reshape(4,3,2) >>> c = np.tensordot(a,b, axes=([1,0],[0,1])) >>> c.shape (5,2) >>> c array([[ 4400., 4730.], [ 4532., 4874.], [ 4664., 5018.], [ 4796., 5162.], [ 4928., 5306.]]) >>> # A slower but equivalent way of computing the same... >>> c = zeros((5,2)) >>> for i in range(5): ... for j in range(2): ... for k in range(3): ... for n in range(4): ... c[i,j] += a[k,n,i] * b[n,k,j]
tile (A, reps)
Construct an array by repeating A the number of times given by reps. Parameters ---------- A : array_like The input array. reps : array_like The number of repetitions of `A` along each axis. Returns ------- c : ndarray The output array. See Also -------- repeat Notes ----- If `reps` has length d, the result will have dimension of max(d, `A`.ndim). If `A`.ndim < d, `A` is promoted to be d-dimensional by prepending new axes. So a shape (3,) array is promoted to (1,3) for 2-D replication, or shape (1,1,3) for 3-D replication. If this is not the desired behavior, promote `A` to d-dimensions manually before calling this function. If `A`.ndim > d, `reps` is promoted to `A`.ndim by pre-pending 1's to it. Thus for an `A` of shape (2,3,4,5), a `reps` of (2,2) is treated as (1,1,2,2). Examples -------- >>> a = np.array([0, 1, 2]) >>> np.tile(a, 2) array([0, 1, 2, 0, 1, 2]) >>> np.tile(a, (2, 2)) array([[0, 1, 2, 0, 1, 2], [0, 1, 2, 0, 1, 2]]) >>> np.tile(a, (2, 1, 2)) array([[[0, 1, 2, 0, 1, 2]], <BLANKLINE> [[0, 1, 2, 0, 1, 2]]]) >>> b = np.array([[1, 2], [3, 4]]) >>> np.tile(b, 2) array([[1, 2, 1, 2], [3, 4, 3, 4]]) >>> np.tile(b, (2, 1)) array([[1, 2], [3, 4], [1, 2], [3, 4]])
trace (a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
Return the sum along diagonals of the array. If a is 2-d, returns the sum along the diagonal of self with the given offset, i.e., the collection of elements of the form a[i,i+offset]. If a has more than two dimensions, then the axes specified by axis1 and axis2 are used to determine the 2-d subarray whose trace is returned. The shape of the resulting array can be determined by removing axis1 and axis2 and appending an index to the right equal to the size of the resulting diagonals. Parameters ---------- a : array_like Array from whis the diagonals are taken. offset : integer, optional Offset of the diagonal from the main diagonal. Can be both positive and negative. Defaults to main diagonal. axis1 : integer, optional Axis to be used as the first axis of the 2-d subarrays from which the diagonals should be taken. Defaults to first axis. axis2 : integer, optional Axis to be used as the second axis of the 2-d subarrays from which the diagonals should be taken. Defaults to second axis. dtype : dtype, optional Determines the type of the returned array and of the accumulator where the elements are summed. If dtype has the value None and a is of integer type of precision less than the default integer precision, then the default integer precision is used. Otherwise, the precision is the same as that of a. out : array, optional Array into which the sum can be placed. Its type is preserved and it must be of the right shape to hold the output. Returns ------- sum_along_diagonals : array If a is 2-d, a 0-d array containing the diagonal is returned. If a has larger dimensions, then an array of diagonals is returned. Examples -------- >>> np.trace(np.eye(3)) 3.0 >>> a = np.arange(8).reshape((2,2,2)) >>> np.trace(a) array([6, 8])
transpose (a, axes=None)
Permute the dimensions of an array. Parameters ---------- a : array_like Input array. axes : list of ints, optional By default, reverse the dimensions, otherwise permute the axes according to the values given. Returns ------- p : ndarray `a` with its axes permuted. A view is returned whenever possible. See Also -------- rollaxis Examples -------- >>> x = np.arange(4).reshape((2,2)) >>> x array([[0, 1], [2, 3]]) >>> np.transpose(x) array([[0, 2], [1, 3]]) >>> x = np.ones((1, 2, 3)) >>> np.transpose(x, (1, 0, 2)).shape (2, 1, 3)
trapz (y, x=None, dx=1.0, axis=-1)
Integrate along the given axis using the composite trapezoidal rule. Integrate `y` (`x`) along given axis. Parameters ---------- y : array_like Input array to integrate. x : {array_like, None}, optional If `x` is None, then spacing between all `y` elements is 1. dx : scalar, optional If `x` is None, spacing given by `dx` is assumed. axis : int, optional Specify the axis. Examples -------- >>> np.trapz([1,2,3]) >>> 4.0 >>> np.trapz([1,2,3], [4,6,8]) >>> 8.0
tri (N, M=None, k=0, dtype=)
Construct an array filled with ones at and below the given diagonal. Parameters ---------- N : int Number of rows in the array. M : int, optional Number of columns in the array. By default, `M` is taken to equal to `N`. k : int, optional The sub-diagonal below which the array is filled. ``k = 0`` is the main diagonal, while ``k < 0`` is below it, and ``k > 0`` is above. The default is 0. dtype : dtype, optional Data type of the returned array. The default is `float`. Returns ------- T : (N,M) ndarray Array with a lower triangle filled with ones, in other words ``T[i,j] == 1`` for ``i <= j + k``. Examples -------- >>> np.tri(3, 5, 2, dtype=int) array([[1, 1, 1, 0, 0], [1, 1, 1, 1, 0], [1, 1, 1, 1, 1]]) >>> np.tri(3, 5, -1) array([[ 0., 0., 0., 0., 0.], [ 1., 0., 0., 0., 0.], [ 1., 1., 0., 0., 0.]])
tril (m, k=0)
Lower triangular. Return a copy of an array with elements above the k-th diagonal zeroed. Parameters ---------- m : array-like, shape (M, N) Input array. k : int Diagonal above which to zero elements. `k = 0` is the main diagonal, `k < 0` is below it and `k > 0` is above. Returns ------- L : ndarray, shape (M, N) Lower triangle of `m`, of same shape and data-type as `m`. See Also -------- triu Examples -------- >>> np.tril([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1) array([[ 0, 0, 0], [ 4, 0, 0], [ 7, 8, 0], [10, 11, 12]])
trim_zeros (filt, trim='fb')
Trim the leading and trailing zeros from a 1D array. Parameters ---------- filt : array_like Input array. trim : string, optional A string with 'f' representing trim from front and 'b' to trim from back. Examples -------- >>> a = np.array((0, 0, 0, 1, 2, 3, 2, 1, 0)) >>> np.trim_zeros(a) array([1, 2, 3, 2, 1])
triu (m, k=0)
Upper triangular. Construct a copy of a matrix with elements below the k-th diagonal zeroed. Please refer to the documentation for `tril`. See Also -------- tril Examples -------- >>> np.triu([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1) array([[ 1, 2, 3], [ 4, 5, 6], [ 0, 8, 9], [ 0, 0, 12]])
typename (char)
Return a description for the given data type code. Parameters ---------- char : str Data type code. Returns ------- out : str Description of the input data type code. See Also -------- typecodes dtype
union1d (ar1, ar2)
Union of 1D arrays with unique elements. Use unique1d() to generate arrays with only unique elements to use as inputs to this function. Parameters ---------- ar1 : array_like, shape(M,) Input array. ar2 : array_like, shape(N,) Input array. Returns ------- union : array Unique union of input arrays. See also -------- numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays.
unique (x)
Return the sorted, unique elements of an array or sequence. Parameters ---------- x : array_like Input array. Returns ------- y : ndarray The sorted, unique elements are returned in a 1-D array. Examples -------- >>> np.unique([1, 1, 2, 2, 3, 3]) array([1, 2, 3]) >>> a = np.array([[1, 1], [2, 3]]) >>> np.unique(a) array([1, 2, 3])
unique1d (ar1, return_index=False, return_inverse=False)
Find the unique elements of an array. Parameters ---------- ar1 : array-like This array will be flattened if it is not already 1-D. return_index : bool, optional If True, also return the indices against `ar1` that result in the unique array. return_inverse : bool, optional If True, also return the indices against the unique array that result in `ar1`. Returns ------- unique : ndarray The unique values. unique_indices : ndarray, optional The indices of the unique values. Only provided if `return_index` is True. unique_inverse : ndarray, optional The indices to reconstruct the original array. Only provided if `return_inverse` is True. See Also -------- numpy.lib.arraysetops : Module with a number of other functions for performing set operations on arrays. Examples -------- >>> np.unique1d([1, 1, 2, 2, 3, 3]) array([1, 2, 3]) >>> a = np.array([[1, 1], [2, 3]]) >>> np.unique1d(a) array([1, 2, 3]) Reconstruct the input from unique values: >>> np.unique1d([1,2,6,4,2,3,2], return_index=True) >>> x = [1,2,6,4,2,3,2] >>> u, i = np.unique1d(x, return_inverse=True) >>> u array([1, 2, 3, 4, 6]) >>> i array([0, 1, 4, 3, 1, 2, 1]) >>> [u[p] for p in i] [1, 2, 6, 4, 2, 3, 2]
unravel_index (x, dims)
Convert a flat index into an index tuple for an array of given shape. e.g. for a 2x2 array, unravel_index(2,(2,2)) returns (1,0). Parameters ---------- x : int Flattened index. dims : shape tuple Input shape. Notes ----- Since x.flat[p] == x.max() it may be easier to use flattened indexing than to re-map the index to a tuple. Examples -------- >>> x = np.ones((5,4)) >>> x array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]) >>> p = x.argmax() >>> p 19 >>> idx = np.unravel_index(p, x.shape) >>> idx (4, 3) >>> x[idx] == x.max() True
unwrap (p, discont=3.1415926535897931, axis=-1)
Unwrap by changing deltas between values to 2*pi complement. Unwrap radian phase `p` by changing absolute jumps greater than `discont` to their 2*pi complement along the given axis. Parameters ---------- p : array_like Input array. discont : float Maximum discontinuity between values. axis : integer Axis along which unwrap will operate. Returns ------- out : ndarray Output array
vander (x, N=None)
Generate a Van der Monde matrix. The columns of the output matrix are decreasing powers of the input vector. Specifically, the i-th output column is the input vector to the power of ``N - i - 1``. Parameters ---------- x : array_like Input array. N : int, optional Order of (number of columns in) the output. Returns ------- out : ndarray Van der Monde matrix of order `N`. The first column is ``x^(N-1)``, the second ``x^(N-2)`` and so forth. Examples -------- >>> x = np.array([1, 2, 3, 5]) >>> N = 3 >>> np.vander(x, N) array([[ 1, 1, 1], [ 4, 2, 1], [ 9, 3, 1], [25, 5, 1]]) >>> np.column_stack([x**(N-1-i) for i in range(N)]) array([[ 1, 1, 1], [ 4, 2, 1], [ 9, 3, 1], [25, 5, 1]])
var (a, axis=None, dtype=None, out=None, ddof=0)
Compute the variance along the specified axis. Returns the variance of the array elements, a measure of the spread of a distribution. The variance is computed for the flattened array by default, otherwise over the specified axis. Parameters ---------- a : array_like Array containing numbers whose variance is desired. If a is not an array, a conversion is attempted. axis : int, optional Axis along which the variance is computed. The default is to compute the variance of the flattened array. dtype : dtype, optional Type to use in computing the variance. For arrays of integer type the default is float32, for arrays of float types it is the same as the array type. out : ndarray, optional Alternative output array in which to place the result. It must have the same shape as the expected output but the type will be cast if necessary. ddof : positive int,optional Means Delta Degrees of Freedom. The divisor used in calculation is N - ddof. Returns ------- variance : {ndarray, scalar}, see dtype parameter above If out=None, returns a new array containing the variance, otherwise a reference to the output array is returned. See Also -------- std : Standard deviation mean : Average Notes ----- The variance is the average of the squared deviations from the mean, i.e. var = mean(abs(x - x.mean())**2). The computed variance is biased, i.e., the mean is computed by dividing by the number of elements, N, rather than by N-1. Note that for complex numbers the absolute value is taken before squaring, so that the result is always real and nonnegative. Examples -------- >>> a = np.array([[1,2],[3,4]]) >>> np.var(a) 1.25 >>> np.var(a,0) array([ 1., 1.]) >>> np.var(a,1) array([ 0.25, 0.25])
vdot (a, b)
Return the dot product of two vectors. The vdot(`a`, `b`) function handles complex numbers differently than dot(`a`, `b`). If the first argument is complex the complex conjugate of the first argument is used for the calculation of the dot product. Parameters ---------- a : array_like If `a` is complex the complex conjugate is taken before calculation of the dot product. b : array_like Second argument to the dot product. Returns ------- output : scalar Returns dot product of `a` and `b`. Can be an int, float, or complex depending on the types of `a` and `b`. See Also -------- dot : Return the dot product without using the complex conjugate of the first argument. Notes ----- The dot product is the summation of element wise multiplication. .. math:: a \cdot b = \sum_{i=1}^n a_i^*b_i = a_1^*b_1+a_2^*b_2+\cdots+a_n^*b_n Examples -------- >>> a = np.array([1+2j,3+4j]) >>> b = np.array([5+6j,7+8j]) >>> np.vdot(a, b) (70-8j) >>> np.vdot(b, a) (70+8j) >>> a = np.array([[1, 4], [5, 6]]) >>> b = np.array([[4, 1], [2, 2]]) >>> np.vdot(a, b) 30 >>> np.vdot(b, a) 30
vsplit (ary, indices_or_sections)
Split array into multiple sub-arrays vertically. Please refer to the `numpy.split` documentation. See Also -------- numpy.split : The default behaviour of this function implements `vsplit`.
vstack (tup)
Stack arrays vertically. `vstack` can be used to rebuild arrays divided by `vsplit`. Parameters ---------- tup : sequence of arrays Tuple containing arrays to be stacked. The arrays must have the same shape along all but the first axis. See Also -------- array_split : Split an array into a list of multiple sub-arrays of near-equal size. split : Split array into a list of multiple sub-arrays of equal size. vsplit : Split array into a list of multiple sub-arrays vertically. dsplit : Split array into a list of multiple sub-arrays along the 3rd axis (depth). concatenate : Join arrays together. hstack : Stack arrays in sequence horizontally (column wise). dstack : Stack arrays in sequence depth wise (along third dimension). Examples -------- >>> a = np.array([1, 2, 3]) >>> b = np.array([2, 3, 4]) >>> np.vstack((a,b)) array([[1, 2, 3], [2, 3, 4]]) >>> a = np.array([[1], [2], [3]]) >>> b = np.array([[2], [3], [4]]) >>> np.vstack((a,b)) array([[1], [2], [3], [2], [3], [4]])
who (vardict=None)
Print the Numpy arrays in the given dictionary. If there is no dictionary passed in or `vardict` is None then returns Numpy arrays in the globals() dictionary (all Numpy arrays in the namespace). Parameters ---------- vardict : dict, optional A dictionary possibly containing ndarrays. Default is globals(). Returns ------- out : None Returns 'None'. Notes ----- Prints out the name, shape, bytes and type of all of the ndarrays present in `vardict`. Examples -------- >>> d = {'x': arange(2.0), 'y': arange(3.0), 'txt': 'Some str', 'idx': 5} >>> np.whos(d) Name Shape Bytes Type =========================================================== <BLANKLINE> y 3 24 float64 x 2 16 float64 <BLANKLINE> Upper bound on total bytes = 40
zeros_like (a)
Returns an array of zeros with the same shape and type as a given array. Equivalent to ``a.copy().fill(0)``. Parameters ---------- a : array_like The shape and data-type of `a` defines the parameters of the returned array. Returns ------- out : ndarray Array of zeros with same shape and type as `a`. See Also -------- numpy.ones_like : Return an array of ones with shape and type of input. numpy.empty_like : Return an empty array with shape and type of input. numpy.zeros : Return a new array setting values to zero. numpy.ones : Return a new array setting values to one. numpy.empty : Return a new uninitialized array. Examples -------- >>> x = np.arange(6) >>> x = x.reshape((2, 3)) >>> x array([[0, 1, 2], [3, 4, 5]]) >>> np.zeros_like(x) array([[0, 0, 0], [0, 0, 0]])
Document Actions
« July 2010 »
July
MoTuWeThFrSaSu
1234
567891011
12131415161718
19202122232425
262728293031
Log in


Forgot your password?
New user?