On 30 Dec 2017, at 11:37 am, Vinodhini Balusamy <me.vi...@gmail.com> wrote: > > Case 2: > >>> > >>> x12 = np.array([[1,2,3],[]]) > >>> x12.ndim > 1 > >>> print(x12) > [list([1, 2, 3]) list([])] > >>> > In case 2, I am trying to understand why it becomes 1 dimentional ?!?! > > > Case 3: > >>> > >>> x12 = np.array([1,2,3]) > >>> x12.ndim > 1 > >>> print(x12) > [1 2 3] > >>> > This seems reasonable to me to be considered as 1 dimensional. > > Would like to understand case 2 a bit more to get to know if i am missing > something. > Will be much appreciated if someone to explain me a bit. > Welcome to the crowd! You cannot create a regular 2-dimensional integer array from one row of length 3 and a second one of length 0. Thus np.array chooses the next most basic type of array it can fit your input data in - you will notice in case 2 the array actually has two elements of type ‘list’, and you can verify that
In [1]: x12 = np.array([[1,2,3],[]]) In [2]: x12.dtype Out[2]: dtype('O') In [3]: x12.shape Out[3]: (2,) i.e. it has created an array of dtype ‘object’, which is probably not what you expected (and nothing you could perform standard arithmetic operations on: In [4]: x12+1 TypeError: can only concatenate list (not "int") to list HTH Derek _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion