code: def construct_1d_ndarray_preserving_na(
      values, dtype=None, copy=False
  ):
      """
      Construct a new ndarray, coercing `values` to `dtype`, preserving NA.
  
      Parameters
      ----------
      values : Sequence
      dtype : numpy.dtype, optional
      copy : bool, default False
          Note that copies may still be made with ``copy=False`` if casting
          is required.
  
      Returns
      -------
      arr : ndarray[dtype]
  
      Examples
      --------
      >>> np.array([1.0, 2.0, None], dtype='str')
      array(['1.0', '2.0', 'None'], dtype='<U4')
  
      >>> construct_1d_ndarray_preserving_na([1.0, 2.0, None], dtype='str')
  
  
      """
      subarr = np.array(values, dtype=dtype, copy=copy)
  
      if dtype is not None and dtype.kind in ("U", "S"):
          # GH-21083
          # We can't just return np.array(subarr, dtype='str') since
          # NumPy will convert the non-string objects into strings
          # Including NA values. Se we have to go
          # string -> object -> update NA, which requires an
          # additional pass over the data.
          na_values = isna(values)
          subarr2 = subarr.astype(object)
          subarr2[na_values] = np.asarray(values, dtype=object)[
              na_values
          ]
          subarr = subarr2
  
      return subarr
  
imports: from datetime import datetime, timedelta
  import numpy
  from pandas._libs import lib, tslib, tslibs
  from pandas._libs.tslibs import NaT, OutOfBoundsDatetime, Period, iNaT
  from pandas.compat import PY3, string_types, text_type, to_str
  from .common import _INT64_DTYPE, _NS_DTYPE, _POSSIBLY_CAST_DTYPES, _TD_DTYPE, ensure_int8, ensure_int16, ensure_int32, ensure_int64, ensure_object, is_bool, is_bool_dtype, is_categorical_dtype, is_complex, is_complex_dtype, is_datetime64_dtype, is_datetime64_ns_dtype, is_datetime64tz_dtype, is_datetime_or_timedelta_dtype, is_datetimelike, is_dtype_equal, is_extension_array_dtype, is_extension_type, is_float, is_float_dtype, is_integer, is_integer_dtype, is_object_dtype, is_scalar, is_string_dtype, is_timedelta64_dtype, is_timedelta64_ns_dtype, is_unsigned_integer_dtype, pandas_dtype
  from .dtypes import DatetimeTZDtype, ExtensionDtype, PandasExtensionDtype, PeriodDtype
  from .generic import ABCDatetimeArray, ABCDatetimeIndex, ABCPeriodArray, ABCPeriodIndex, ABCSeries
  from .inference import is_list_like
  from .missing import isna, notna
label_desc: Use image node_id 25 for calling a global function with example usage: construct_1d_ndarray_preserving_na(values, dtype, copy) and returns: subarr