What is the difference between `ndarray`

and `array`

in Numpy? And where can I find the implementations in the numpy source code?

Well, `np.array`

is just a convenience function to create an `ndarray`

, it is not a class itself.

You can also create an array using `np.ndarray`

, but it is not the recommended way. From the docstring of `np.ndarray`

:

Arrays should be constructed using

`array`

,`zeros`

or`empty`

... The parameters given here refer to a low-level method (`ndarray(...)`

) for instantiating an array.

Most of the meat of the implementation is in C code, here in multiarray, but you can start looking at the ndarray interfaces here:

https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py