In [2]:

```
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print (a.shape)
```

In [3]:

```
# this resizes the ndarray
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2)
print (a)
```

NumPy also provides a reshape function to resize an array.

In [5]:

```
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print (b)
```

In [6]:

```
# an array of evenly spaced numbers
import numpy as np
a = np.arange(24)
print (a)
```

In [7]:

```
# this is one dimensional array
import numpy as np
a = np.arange(24)
a.ndim
# now reshape it
b = a.reshape(2,4,3)
print (b)
# b is having three dimensions
```

In [9]:

```
# dtype of array is int8 (1 byte)
import numpy as np
x = np.array([1,2,3,4,5], dtype = np.int8)
print (x.itemsize)
```

In [11]:

```
# dtype of array is now float32 (4 bytes)
import numpy as np
x = np.array([1,2,3,4,5], dtype = np.float32)
print (x.itemsize)
```

The ndarray object has the following attributes. Its current values are returned by this function.

In [1]:

```
import numpy as np
x = np.array([1,2,3,4,5])
print (x.flags)
```

Attribute | Description | |||
---|---|---|---|---|

C_CONTIGUOUS (C) | The data is in a single, C-style contiguous segment | |||

F_CONTIGUOUS (F) | The data is in a single, Fortran-style contiguous segment | |||

OWNDATA (O) | The array owns the memory it uses or borrows it from another object | |||

WRITEABLE (W) | The data area can be written to. Setting this to False locks the data, making it read-only | |||

ALIGNED (A) | The data and all elements are aligned appropriately for the hardware | |||

UPDATEIFCOPY (U) | This array is a copy of some other array. When this array is deallocated, the base array will be updated with the contents of this array |

Dolly Solanki