5 Best Ways to Convert Python Complex to Real Number

πŸ’‘ Problem Formulation: In Python, complex numbers are represented by a real part and an imaginary part. Sometimes, you might need to extract just the real part of a complex number for further calculations or processing. For instance, if given the complex number 3+4j, the desired output is 3, the real part of the complex number.

Method 1: Using the real Attribute

Every complex number in Python has a built-in attribute .real that returns its real part. This method is straightforward and is the most common way to obtain the real portion of a complex number.

Here’s an example:

complex_number = 3 + 4j
real_part = complex_number.real
print(real_part)

Output:

3.0

This code snippet demonstrates how to extract the real part of a complex number using the .real attribute. It directly accesses the real component of complex_number and prints it.

Method 2: Using the abs() Function

While the abs() function typically returns the magnitude of a complex number, when applied to the real part only, it effectively converts a real number to its absolute value, which can be useful in certain contexts.

Here’s an example:

real_number = -5
real_part = abs(real_number)
print(real_part)

Output:

5

By applying the abs() function, we convert a negative real number to its positive counterpart, thus demonstrating how to obtain the absolute value of the real part of an actual real number.

Method 3: Using the astype() Function with NumPy Arrays

When working with NumPy arrays, you can use the astype() function to cast the complex array to a float, which discards the imaginary part and keeps only the real numbers.

Here’s an example:

import numpy as np
complex_array = np.array([1+2j, 3+4j, 5+6j])
real_array = complex_array.astype(float)
print(real_array)

Output:

[1. 3. 5.]

This snippet utilizes NumPy’s astype() function to convert an array of complex numbers into an array of their real components.

Method 4: Mapping the Real Attribute to Each Element in a List

For a list of complex numbers, the map() function can be used to apply the real attribute to each element, collecting the real parts into a new list.

Here’s an example:

complex_list = [1+2j, 3+4j, 5+6j]
real_list = list(map(lambda c: c.real, complex_list))
print(real_list)

Output:

[1.0, 3.0, 5.0]

The example demonstrates mapping the real attribute over a list of complex numbers to extract a list of real numbers.

Bonus One-Liner Method 5: List Comprehension

Similar to Method 4, a list comprehension can be used for a more Pythonic and concise way of extracting the real parts from a list of complex numbers.

Here’s an example:

complex_list = [1+2j, 3+4j, 5+6j]
real_list = [c.real for c in complex_list]
print(real_list)

Output:

[1.0, 3.0, 5.0]

By using list comprehension, we achieve the same result as Method 4, but with more concise, readable code that is idiomatic to Python.

Summary/Discussion

  • Method 1: Using the real Attribute. Straightforward and direct. Best for single complex numbers. Not applicable to lists or arrays directly.
  • Method 2: Using the abs() Function. Returns absolute value for real numbers. Not suitable for complex numbers but good for showcasing the use of abs() on real members.
  • Method 3: Using the astype() Function with NumPy Arrays. Ideal for arrays of complex numbers. Requires the NumPy library. Not applicable to single complex numbers or normal lists.
  • Method 4: Mapping the Real Attribute. Good for lists of complex numbers. A bit verbose. Less Pythonic compared to list comprehension.
  • Method 5: List Comprehension. Pythonic and concise. Ideal for converting lists of complex numbers to lists of real numbers.