NDArray API

.. currentmodule:: mxnet.ndarray

Overview

This document lists the routines of the n-dimensional array package:

.. autosummary::
    :nosignatures:

    mxnet.ndarray

The NDArray API, defined in the ndarray (or simply nd) package, provides imperative tensor operations on CPU/GPU. An NDArray represents a multi-dimensional, fixed-size homogenous array.

>>> x = mx.nd.array([[1, 2, 3], [4, 5, 6]])
>>> type(x)
<class 'mxnet.ndarray.NDArray'>
>>> x.shape
(2, 3)
>>> y = x + mx.nd.ones(x.shape)*3
>>> print(y.asnumpy())
[[ 4.  5.  6.]
 [ 7.  8.  9.]]
>>> z = y.as_in_context(mx.gpu(0))
>>> print(z)
<NDArray 2x3 @gpu(0)>

A detailed tutorial is available at NDArray - Imperative tensor operations on CPU/GPU.


.. note:: ``mxnet.ndarray`` is similar to ``numpy.ndarray`` in some aspects. But the differences are not negligible. For instance: - ``mxnet.ndarray.NDArray.T`` does real data transpose to return new a copied array, instead of returning a view of the input array. - ``mxnet.ndarray.dot`` performs dot product between the last axis of the first input array and the first axis of the second input, while `numpy.dot` uses the second last axis of the input array. In addition, ``mxnet.ndarray.NDArray`` supports GPU computation and various neural network layers. .. note:: ``ndarray`` provides almost the same routines as ``symbol``. Most routines between these two packages share the source code. But ``ndarray`` differs from ``symbol`` in few aspects: - ``ndarray`` adopts imperative programming, namely sentences are executed step-by-step so that the results can be obtained immediately whereas ``symbol`` adopts declarative programming. - Most binary operators in ``ndarray`` such as ``+`` and ``>`` have broadcasting enabled by default.

In the rest of this document, we first overview the methods provided by the ndarray.NDArray class, and then list other routines provided by the ndarray package.

The NDArray class

Array attributes

.. autosummary::
    :nosignatures:

    NDArray.shape
    NDArray.size
    NDArray.context
    NDArray.dtype

Array conversion

.. autosummary::
    :nosignatures:

    NDArray.copy
    NDArray.copyto
    NDArray.as_in_context
    NDArray.asnumpy
    NDArray.asscalar
    NDArray.astype

Array change shape

.. autosummary::
    :nosignatures:

    NDArray.T
    NDArray.reshape
    NDArray.broadcast_to

Arithmetic operations

.. autosummary::
    :nosignatures:

    NDArray.__add__
    NDArray.__sub__
    NDArray.__rsub__
    NDArray.__neg__
    NDArray.__mul__
    NDArray.__div__
    NDArray.__rdiv__
    NDArray.__mod__
    NDArray.__rmod__
    NDArray.__pow__

In-place arithmetic operations

.. autosummary::
    :nosignatures:

    NDArray.__iadd__
    NDArray.__isub__
    NDArray.__imul__
    NDArray.__idiv__
    NDArray.__imod__

Comparison operators

.. autosummary::
    :nosignatures:

    NDArray.__lt__
    NDArray.__le__
    NDArray.__gt__
    NDArray.__ge__
    NDArray.__eq__
    NDArray.__ne__

Indexing

.. autosummary::
    :nosignatures:

    NDArray.__getitem__
    NDArray.__setitem__

Lazy evaluation

.. autosummary::
    :nosignatures:

    NDArray.wait_to_read

Array creation routines

.. autosummary::
    :nosignatures:

    array
    empty
    zeros
    ones
    full
    arange
    load
    save

Array manipulation routines

Changing array shape and type

.. autosummary::
    :nosignatures:

    cast
    reshape
    flatten
    expand_dims

Expanding array elements

.. autosummary::
    :nosignatures:

    broadcast_to
    broadcast_axes
    repeat
    tile
    pad

Rearranging elements

.. autosummary::
    :nosignatures:

    transpose
    swapaxes
    flip

Joining and splitting arrays

.. autosummary::
    :nosignatures:

    concat
    split

Indexing routines

.. autosummary::
    :nosignatures:

    slice
    slice_axis
    take
    batch_take
    one_hot
    pick

Mathematical functions

Arithmetic operations

.. autosummary::
    :nosignatures:

    add
    subtract
    negative
    multiply
    divide
    modulo
    dot
    batch_dot
    add_n

Trigonometric functions

.. autosummary::
    :nosignatures:

    sin
    cos
    tan
    arcsin
    arccos
    arctan
    degrees
    radians

Hyperbolic functions

.. autosummary::
    :nosignatures:

    sinh
    cosh
    tanh
    arcsinh
    arccosh
    arctanh

Reduce functions

.. autosummary::
    :nosignatures:

    sum
    nansum
    prod
    nanprod
    mean
    max
    min
    norm

Rounding

.. autosummary::
    :nosignatures:

    round
    rint
    fix
    floor
    ceil
    trunc

Exponents and logarithms

.. autosummary::
    :nosignatures:

    exp
    expm1
    log
    log10
    log2
    log1p

Powers

.. autosummary::
    :nosignatures:

    power
    sqrt
    rsqrt
    square

Logic functions

.. autosummary::
    :nosignatures:

    equal
    not_equal
    greater
    greater_equal
    lesser
    lesser_equal

Random sampling

.. autosummary::
    :nosignatures:

    random_uniform
    random_normal
    random_gamma
    random_exponential
    random_poisson
    random_negative_binomial
    random_generalized_negative_binomial
    mxnet.random.seed

Sorting and searching

.. autosummary::
    :nosignatures:

    sort
    topk
    argsort
    argmax
    argmin

Miscellaneous

.. autosummary::
    :nosignatures:

    maximum
    minimum
    clip
    abs
    sign
    gamma
    gammaln

Neural network

Basic

.. autosummary::
    :nosignatures:

    FullyConnected
    Convolution
    Activation
    BatchNorm
    Pooling
    SoftmaxOutput
    softmax
    log_softmax

More

.. autosummary::
    :nosignatures:

    Correlation
    Deconvolution
    RNN
    Embedding
    LeakyReLU
    InstanceNorm
    L2Normalization
    LRN
    ROIPooling
    SoftmaxActivation
    Dropout
    BilinearSampler
    GridGenerator
    UpSampling
    SpatialTransformer
    LinearRegressionOutput
    LogisticRegressionOutput
    MAERegressionOutput
    SVMOutput
    softmax_cross_entropy
    smooth_l1
    IdentityAttachKLSparseReg
    MakeLoss
    BlockGrad
    Custom

API Reference

.. automodule:: mxnet.ndarray
    :members:

.. automodule:: mxnet.random
    :members: