code: def df_to_array(self, df, tech_indicator_list, if_vix):
      df = df.copy()
      unique_ticker = df.tic.unique()
      if_first_time = True
      for tic in unique_ticker:
          if if_first_time:
              price_array = df[df.tic == tic][["close"]].values
              tech_array = df[df.tic == tic][tech_indicator_list].values
              if if_vix:
                  turbulence_array = df[df.tic == tic]["VIXY"].values
              else:
                  turbulence_array = df[df.tic == tic][
                      "turbulence"
                  ].values
              if_first_time = False
          else:
              price_array = np.hstack(
                  [price_array, df[df.tic == tic][["close"]].values]
              )
              tech_array = np.hstack(
                  [
                      tech_array,
                      df[df.tic == tic][tech_indicator_list].values,
                  ]
              )
      #        print("Successfully transformed into array")
      return price_array, tech_array, turbulence_array
  
imports: from __future__ import annotations
  from concurrent.futures import ProcessPoolExecutor
  from concurrent.futures import ThreadPoolExecutor
  import alpaca_trade_api
  import exchange_calendars
  import numpy
  import pandas
  import pytz
  from stockstats import StockDataFrame
label_desc: Use image node_id 11 for calling the AlpacaProcessor obj's underlying member method code with example usage: obj.df_to_array(df, tech_indicator_list, if_vix) and returns: price_array,  tech_array,  turbulence_array