# NDArray API

## Overview

A `AI::MXNet::NDArray` is a multidimensional container of items of the same type and
size. Various methods for data manipulation and computation are provided.

```perl
pdl> $x = mx->nd->array([[1, 2, 3], [4, 5, 6]])
pdl> print $x->aspdl->shape
[3, 2]
pdl> $y = $x + mx->nd->ones($x->shape)*3
pdl> print $y->aspdl
[
 [4 5 6]
 [7 8 9]
]
pdl> $z = $y->as_in_context(mx->gpu(0))
pdl> print $z,"\n"
<AI::MXNet::NDArray 2x3 @gpu(0)>
```

A detailed tutorial is available at
[http://mxnet.io/tutorials/python/ndarray.html](http://mxnet.io/tutorials/python/ndarray.html).

Note: AI::MXNet::NDarray is similar to numpy.ndarray in some aspects. But the difference is not negligible. For example

- AI::MXNet::NDArray->T does real data transpose to return new a copied array, instead
     of returning a view of the input array.
- AI::MXNet::NDArray->dot performs dot 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 additional, NDArray supports GPU computation and various neural
network layers.

AI::MXNet::NDarray also provides almost same routines as AI::MXNet::symbol. Most
routines between these two packages share the same C++ operator source
codes. But AI::MXNet::NDarray differs from AI::MXNet::Symbol in several aspects:

- AI::MXNet::NDArray adopts imperative programming, namely sentences are executed
     step-by-step so that the results can be obtained immediately.
