code: def lp2lp_zpk(z, p, k, wo=1.0):
      r"""
      Transform a lowpass filter prototype to a different frequency.
  
      Return an analog low-pass filter with cutoff frequency `wo`
      from an analog low-pass filter prototype with unity cutoff frequency,
      using zeros, poles, and gain ('zpk') representation.
  
      Parameters
      ----------
      z : array_like
          Zeros of the analog filter transfer function.
      p : array_like
          Poles of the analog filter transfer function.
      k : float
          System gain of the analog filter transfer function.
      wo : float
          Desired cutoff, as angular frequency (e.g., rad/s).
          Defaults to no change.
  
      Returns
      -------
      z : ndarray
          Zeros of the transformed low-pass filter transfer function.
      p : ndarray
          Poles of the transformed low-pass filter transfer function.
      k : float
          System gain of the transformed low-pass filter.
  
      See Also
      --------
      lp2hp_zpk, lp2bp_zpk, lp2bs_zpk, bilinear
      lp2lp
      scipy.signal.lp2lp_zpk
  
      """
      z = cupy.atleast_1d(z)
      p = cupy.atleast_1d(p)
      wo = float(wo)  # Avoid int wraparound
  
      degree = _relative_degree(z, p)
  
      # Scale all points radially from origin to shift cutoff frequency
      z_lp = wo * z
      p_lp = wo * p
  
      # Each shifted pole decreases gain by wo, each shifted zero increases it.
      # Cancel out the net change to keep overall gain the same
      k_lp = k * wo**degree
  
      return z_lp, p_lp, k_lp
  
imports: import warnings
  import math
  from math import pi, prod
  import cupy
  from cupyx.scipy.special import binom
  import cupyx.scipy.special
  from cupyx.scipy.signal import _optimize
  from cupyx.scipy.signal._polyutils import roots, poly
  from cupyx.scipy.signal._lti_conversion import abcd_normalize
label_desc: Use image node_id 11 for calling a global function with example usage: lp2lp_zpk(z, p, k, wo) and returns: z_lp,  p_lp,  k_lp