# Scipy System Blind Points

- A figure in matplotlib means the whole window in the user interface.

Each array has attributes `ndim`

(the number of dimensions), `shape`

(the size of each dimension), and `size`

(the total size of the array):

```
print("x3 ndim: ", x3.ndim)
print("x3 shape:", x3.shape)
print("x3 size: ", x3.size)
x3 ndim: 3
x3 shape: (3, 4, 5)
x3 size: 60
```

Another useful attribute is the `dtype`

, the data type of the array (which we discussed previously in Understanding Data Types in Python):

```
print("dtype:", x3.dtype)
```

```
dtype: int64
```

Other attributes include `itemsize`

, which lists the size (in bytes) of each array element, and `nbytes`

, which lists the total size (in bytes) of the array:

```
print("itemsize:", x3.itemsize, "bytes")
print("nbytes:", x3.nbytes, "bytes")
itemsize: 8 bytes
nbytes: 480 bytes
```

In general, we expect that `nbytes`

is equal to `itemsize`

times `size`

.

```
x = np.arange(10)
x
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
```

```
x[::2] # every other element
# array([0, 2, 4, 6, 8])
```

```
x[1::2] # every other element, starting at index 1
# array([1, 3, 5, 7, 9])
```

A potentially confusing case is when the `step`

value is negative. In this case, the defaults for `start`

and `stop`

are swapped. This becomes a convenient way to reverse an array:

```
x[::-1] # all elements, reversed
# array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
```

```
x[5::-2] # reversed every other from index 5
# array([5, 3, 1])
```