How to Get the Sign of an Integer in Python?

In Python, determining the sign of an integer means finding whether a number is positive (+1), negative (-1), or zero (0). Python offers several approaches to accomplish this task, from simple comparisons to built-in functions.

Using Mathematical Comparison with Zero

The most straightforward approach uses conditional statements to compare the number with zero ?

def get_sign(number):
    if number > 0:
        return 1
    elif number < 0:
        return -1
    else:
        return 0

# Test with different values
values = [5, -3, 0, 42]
for val in values:
    print(f"Sign of {val}: {get_sign(val)}")
Sign of 5: 1
Sign of -3: -1
Sign of 0: 0
Sign of 42: 1

Using math.copysign() Function

The math.copysign() function returns the magnitude of the first argument with the sign of the second argument ?

import math

def get_sign_copysign(number):
    return int(math.copysign(1, number))

# Test with different values
values = [7, -15, 0, 100]
for val in values:
    print(f"Sign of {val}: {get_sign_copysign(val)}")
Sign of 7: 1
Sign of -15: -1
Sign of 0: 1
Sign of 100: 1

Note: math.copysign(1, 0) returns 1.0, not 0, so this method treats zero as positive.

Using numpy.sign() Function

NumPy provides a dedicated sign() function that works with both individual numbers and arrays ?

import numpy as np

# Single number
number = -25
print(f"Sign of {number}: {np.sign(number)}")

# Array of numbers
numbers = [25, -25, 0, 42, -8]
signs = np.sign(numbers)
print(f"Numbers: {numbers}")
print(f"Signs: {signs}")
Sign of -25: -1
Numbers: [25, -25, 0, 42, -8]
Signs: [ 1 -1  0  1 -1]

Using Division with abs() Function

This method divides the number by its absolute value, with special handling for zero ?

def get_sign_abs(x):
    if x == 0:
        return 0
    else:
        return int(x / abs(x))

# Test with different values
values = [10, -7, 0, -50]
for val in values:
    print(f"Sign of {val}: {get_sign_abs(val)}")
Sign of 10: 1
Sign of -7: -1
Sign of 0: 0
Sign of -50: -1

Comparison

Method Handles Zero Correctly Works with Arrays Performance
Mathematical Comparison Yes No Fast
math.copysign() No (treats 0 as +1) No Fast
numpy.sign() Yes Yes Very Fast for arrays
Division with abs() Yes No Moderate

Conclusion

For simple cases, use mathematical comparison with zero. For array operations, numpy.sign() is the most efficient. The math.copysign() method is useful when you need to handle special float values but doesn't treat zero correctly for sign determination.

Updated on: 2026-03-27T00:38:41+05:30

16K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements