class_docstr: Provides accessor methods for a specific block.
  
  Ideally, we wouldn't need a separate accessor classes for blocks. However,
  this is needed if we want to support storing ``pyarrow.Table`` directly
  as a top-level Ray object, without a wrapping class (issue #17186).
class_docstr_tok: ["Provides","accessor","methods","for","a","specific","block",".","Ideally",",","we","would","n't","need","a","separate","accessor","classes","for","blocks",".","However",",","this","is","needed","if","we","want","to","support","storing","``","pyarrow.Table","``","directly","as","a","top-level","Ray","object",",","without","a","wrapping","class","(","issue","#","17186",")","."]
docstr: Convert this block (or columns of block) into a NumPy ndarray.
  
  Args:
      columns: Name of columns to convert, or None if converting all columns.
docstr_tok: ["Convert","this","block","(","or","columns","of","block",")","into","a","NumPy","ndarray",".","Args",":","columns",":","Name","of","columns","to","convert",",","or","None","if","converting","all","columns","."]
code: def to_numpy(
      self, columns: Optional[Union[str, List[str]]] = None
  ) -> Union[np.ndarray, Dict[str, np.ndarray]]:
      """Convert this block (or columns of block) into a NumPy ndarray.
  
      Args:
          columns: Name of columns to convert, or None if converting all columns.
      """
      raise NotImplementedError
  
imports: import collections
  import os
  import time
  from dataclasses import dataclass
  from typing import TYPE_CHECKING, Callable, Dict, Iterator, List, Literal, Optional, Protocol, Tuple, TypeVar, Union
  import numpy
  import ray
  from ray import DynamicObjectRefGenerator
  from ray.data._internal.util import _check_pyarrow_version, _truncated_repr
  from ray.types import ObjectRef
  from ray.util.annotations import DeveloperAPI
  import psutil
label_desc: Use image node_id 8 for calling the BlockAccessor obj's underlying member method code with example usage: obj.to_numpy(columns) without return types