Inconsistence between NDArray and Symbol API for context

When I looked at the definition of functions to initialize,

In case of NDArray, it isn’t mandatory to mention the context

However, for Symbol API, it is necessary to mention the context parameter ctx

What was the reason behind this design decision?

The symbol API is used to define a computational graph, the context of where these operations are happening is not relevant to the graph. Where the operations will happen will depend on where the input of the graphs are initialized when you bind them to the symbols.

When you create a NDArray, you are allocating a tensor on a specific compute context.