https://stackoverflow.com/questions/22053050/difference-between-numpy-array-shape-r-1-and-r
Numpy arrays are not vectors. Or matrices for that matters. They're arrays.
They can be used to represent vectors, matrices, tensors or anything you want. The genius of numpy however is to represent arrays, and let the user decide on their meaning.
It is a table of elements (usually numbers), all of the same type, indexed by a tuple of positive integers. In NumPy dimensions are called axes. The number of axes is rank.
termwise multiplication:
broadcasting: duplicate row or column