# NumPy ptp()

The `numpy.ptp()` method computes the range of values (maximum - minimum) in an array along the specified axis. Here, ptp stands for peak to peak.

### Example

``````import numpy as np

# create an array
array1 = np.array([1, 2, 3, 4, 5, 6, 7])

# calculate the range of the array
range = np.ptp(array1)

print(range)

# Output: 6``````

## ptp() Syntax

The syntax of the `numpy.ptp()` method is:

``numpy.ptp(array, axis = None, out = None, keepdims = <no value>)``

## ptp() Arguments

The `numpy.ptp()` method takes the following arguments:

• `array` - array containing numbers whose range is desired (can be `array_like`)
• `axis` (optional) - axis or axes along which the range is computed (`int` or `tuple of int`)
• `out` (optional) - the output array in which to place the result (`ndarray`)
• `keepdims` (optional) - specifies whether to preserve the dimensions of the original array (`bool`)

Notes: The default values of `ptp()` arguments have the following implications:

• `axis = None`, i.e. the range of the entire array is taken.
• By default, `keepdims` will not be passed.

## ptp() Return Value

The `numpy.ptp()` method returns the range of values (maximum - minimum) in an array along the specified axis.

Note: If one of the elements in the given axis is `NaN`, `numpy.ptp()` also returns `NaN`.

## Example 1: Find the Range of a ndArray

``````import numpy as np

# create an array
array1 = np.array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])

# find the range of entire array
range1 = np.ptp(array1)

# find the range across axis 0
range2 = np.ptp(array1, 0)

# find the range across axis 0 and 1
range3 = np.ptp(array1, (0, 1))

print('\nRange of the entire array:', range1)
print('\nRange across axis 0:\n', range2)
print('\nRange across axis 0 and 1', range3)``````

Output

```Range of the entire array: 7

Range across axis 0:
[[4 4]
[4 4]]

Range across axis 0 and 1 [6 6]```

## Example 2: Using Optional keepdims Argument

If `keepdims` is set to `True`, the resultant range array is of same number of dimensions as the original array.

``````import numpy as np

array1 = np.array([[1, 2, 3],
[4, 5, 6]])

# keepdims defaults to False
result1 = np.ptp(array1, axis = 0)

# pass keepdims as True
result2 = np.ptp(array1, axis = 0, keepdims = True)

print('Dimensions in original array:', array1.ndim)
print('Without keepdims:', result1, 'with dimensions', result1.ndim)
print('With keepdims:', result2, 'with dimensions', result2.ndim)``````

Output

```Dimensions in original array: 2
Without keepdims: [3 3 3] with dimensions 1
With keepdims: [[3 3 3]] with dimensions 2```

## Example 3: Using Optional out Argument

The `out` parameter allows us to specify an output array where the result will be stored.

``````import numpy as np

array1 = np.array([[12, 21, 13],
[41, 15, 6]])

# create an output array
output = np.zeros(3)

# compute range and store the result in the output array
np.ptp(array1, out = output, axis = 0)

print('Range:', output)``````

Output

`Range: [29.  6.  7.]`

## Example 4: Data Type for ptp()

The `numpy.ptp()` method has no parameter to specify the data type of the output array where the result will be stored. This is because it will use the same data type as the element of the original array.

``````import numpy as np

array1 = np.array([[127, 127, 127],
[1, 0, -1]], dtype = np.int8)

# compute range and store the result in the output array
output = np.ptp(array1, axis = 0)

# print the range of the array
print('Range:', output)

# print the data type of the output array
print('Data Type of output array:', output.dtype)``````

Output

```Range: [ 126  127 -128]
Data Type of output array: int8```

In this example, the given data type is `np.int8` which ranges from -128 to 127.

For the third column, the peak to peak value is `127 - (-1) = 128` which goes out of range for `np.int8`, thus giving us -128.

Note: A negative value can be returned when the input is an array of signed integers.