Bird
Raised Fist0
NumPydata~20 mins

Complex number type in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Complex Number Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of numpy complex array addition
What is the output of this code that adds two numpy arrays of complex numbers?
NumPy
import numpy as np
arr1 = np.array([1+2j, 3+4j])
arr2 = np.array([5+6j, 7+8j])
result = arr1 + arr2
print(result)
Aarray([6.+6.j, 10.+12.j])
Barray([6.+8.j, 10.+10.j])
Carray([6.+8.j, 10.+12.j])
Darray([6.+8.j, 10.+14.j])
Attempts:
2 left
💡 Hint
Remember how complex numbers add: real parts add, imaginary parts add.
❓ data_output
intermediate
1:30remaining
Shape and dtype of complex numpy array
What is the shape and data type of this numpy array?
NumPy
import numpy as np
arr = np.array([[1+1j, 2+2j], [3+3j, 4+4j]])
print(arr.shape, arr.dtype)
A(2, 2) complex128
B(4,) complex128
C(2, 2) complex64
D(2, 2) float64
Attempts:
2 left
💡 Hint
Check the shape of the nested list and default complex dtype in numpy.
🔧 Debug
advanced
1:30remaining
Identify the error in complex number array creation
What error does this code raise when trying to create a numpy array of complex numbers?
NumPy
import numpy as np
arr = np.array([1+2, 3+4j])
ANo error, creates array with dtype complex128
BNo error, creates array with mixed types
CValueError: setting an array element with a sequence
DTypeError: unsupported operand type(s) for +: 'int' and 'int'
Attempts:
2 left
💡 Hint
Check how numpy handles mixed numeric types including complex and int.
❓ visualization
advanced
2:30remaining
Visualizing real and imaginary parts of complex array
Which option correctly plots the real and imaginary parts of this complex numpy array?
NumPy
import numpy as np
import matplotlib.pyplot as plt
arr = np.array([1+2j, 3+4j, 5+6j])
plt.plot(arr.real, label='Real')
plt.plot(arr.imag, label='Imaginary')
plt.legend()
plt.show()
AScatter plot with points at (1,2), (3,4), (5,6)
BPie chart showing ratio of real to imaginary parts
CBar chart with bars for magnitude of each complex number
DLine plot with two lines: real parts [1,3,5] and imaginary parts [2,4,6]
Attempts:
2 left
💡 Hint
Look at what plt.plot(arr.real) and plt.plot(arr.imag) produce.
🧠 Conceptual
expert
2:00remaining
Effect of numpy complex dtype on arithmetic precision
Which statement about numpy complex dtypes is correct?
Acomplex128 uses 64 bits total, 32 bits each for real and imaginary parts
Bcomplex64 uses 32 bits for real and 32 bits for imaginary parts, offering less precision than complex128
Ccomplex64 and complex128 have the same precision but differ in memory layout
Dcomplex128 uses 128 bits for the real part only, imaginary part is stored separately
Attempts:
2 left
💡 Hint
Recall how floating point precision relates to complex number storage.

Practice

(1/5)
1. What does the numpy.complex128 data type represent?
easy
A. A string representing a complex number
B. A real number with 128 bits precision
C. An integer number with 128 bits
D. A complex number with double precision for real and imaginary parts

Solution

  1. Step 1: Understand the data type name

    The name complex128 indicates a complex number type with 128 bits total.
  2. Step 2: Recall complex number structure in numpy

    In numpy, complex128 stores two 64-bit floats: one for real and one for imaginary parts.
  3. Final Answer:

    A complex number with double precision for real and imaginary parts -> Option D
  4. Quick Check:

    complex128 = complex number with 128 bits [OK]
Hint: Look for 'complex' and bit size meaning real+imag parts [OK]
Common Mistakes:
  • Confusing complex128 with real number types
  • Thinking complex128 stores integers
  • Assuming complex128 is a string type
2. Which of the following is the correct way to create a numpy array of complex numbers with type complex64?
easy
A. np.array([1+2j, 3+4j], dtype='complex64')
B. np.array([1+2j, 3+4j], dtype='int64')
C. np.array([1, 2, 3], dtype='complex64')
D. np.array([1+2, 3+4], dtype='complex64')

Solution

  1. Step 1: Check the array elements

    The elements must be complex numbers, so they need an imaginary part like 1+2j.
  2. Step 2: Check the dtype argument

    Using dtype='complex64' correctly sets the array to complex numbers with 64-bit precision.
  3. Final Answer:

    np.array([1+2j, 3+4j], dtype='complex64') -> Option A
  4. Quick Check:

    Complex elements + complex64 dtype = correct array [OK]
Hint: Use complex literals with 'j' and set dtype to complex64 [OK]
Common Mistakes:
  • Using integer dtype with complex numbers
  • Missing imaginary part in elements
  • Using invalid dtype strings
3. What is the output of this code?
import numpy as np
z = np.array([3+4j, 1-1j], dtype=np.complex128)
magnitudes = np.abs(z)
print(magnitudes)
medium
A. [5. 1.41421356]
B. [7.+0.j 0.+0.j]
C. [3.+4.j 1.-1.j]
D. [0.6 0.8]

Solution

  1. Step 1: Understand np.abs on complex array

    np.abs returns the magnitude (distance from origin) of each complex number.
  2. Step 2: Calculate magnitudes manually

    For 3+4j, magnitude = sqrt(3^2 + 4^2) = 5. For 1-1j, magnitude = sqrt(1^2 + (-1)^2) = sqrt(2) ≈ 1.41421356.
  3. Final Answer:

    [5. 1.41421356] -> Option A
  4. Quick Check:

    Magnitude = sqrt(real² + imag²) [OK]
Hint: Magnitude = sqrt(real² + imag²) using np.abs [OK]
Common Mistakes:
  • Confusing magnitude with real or imaginary parts
  • Expecting complex output instead of float magnitudes
  • Using np.angle instead of np.abs
4. The following code throws an error. What is the cause?
import numpy as np
z = np.array([1+2j, 3+4j], dtype='complex64')
angle = np.angle(z, deg=True)
print(angle)
medium
A. np.angle does not support degree output
B. No error; code runs fine
C. Missing import for np.angle function
D. dtype 'complex64' is invalid for np.angle

Solution

  1. Step 1: Check dtype compatibility

    np.angle works with complex arrays of any valid complex dtype including complex64.
  2. Step 2: Check np.angle parameters

    The parameter deg=True is valid and returns angle in degrees.
  3. Final Answer:

    No error; code runs fine -> Option B
  4. Quick Check:

    np.angle supports complex64 and deg=True [OK]
Hint: np.angle supports complex64 and degree output [OK]
Common Mistakes:
  • Assuming complex64 is unsupported by np.angle
  • Thinking deg=True is invalid
  • Expecting import error for np.angle
5. You have a numpy array z = np.array([1+1j, 0+0j, -1-1j], dtype=np.complex128). You want to create a new array that contains the magnitudes but replaces zeros with the string 'zero'. Which code correctly does this?
hard
A. np.array([str(m) if m == 0 else m for m in np.abs(z)])
B. np.abs(z).replace(0, 'zero')
C. np.where(np.abs(z) == 0, 'zero', np.abs(z))
D. np.abs(z).astype(str).replace('0.0', 'zero')

Solution

  1. Step 1: Calculate magnitudes with np.abs

    np.abs(z) returns an array of magnitudes as floats.
  2. Step 2: Replace zeros with 'zero' using np.where

    np.where(condition, value_if_true, value_if_false) replaces elements where magnitude is 0 with string 'zero', else keeps magnitude.
  3. Final Answer:

    np.where(np.abs(z) == 0, 'zero', np.abs(z)) -> Option C
  4. Quick Check:

    Use np.where for conditional replacement in arrays [OK]
Hint: Use np.where(condition, 'zero', values) for replacements [OK]
Common Mistakes:
  • Trying to use .replace on numpy arrays (not supported)
  • Converting all to strings unnecessarily
  • Using list comprehension without numpy benefits
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard