# skbio.tree.TreeNode.to_array

`TreeNode.``to_array`(attrs=None, nan_length_value=None)

  Return an array representation of self

  State: Experimental as of 0.4.0.

  Parameters:

  attrs : list of tuple or None

  > The attributes and types to return. The expected form is [(attribute_name, type)]. If None, then name, length, and id are returned.

  nan_length_value : float, optional

  > If provided, replaces any nan in the branch length vector (i.e., `result['length']`) with this value. nan branch lengths can arise from an edge not having a length (common for the root node parent edge), which can making summing problematic.

  Returns:

  dict of array

  > {id_index: {id: TreeNode},

  >   child_index: ((node_id, left_child_id, right_child_id)), attr_1: array(...), ... attr_N: array(...)}

  Notes

  Attribute arrays are in index order such that TreeNode.id can be used as a lookup into the array.

  Examples

      >>> from pprint import pprint
      >>> from skbio import TreeNode
      >>> t = TreeNode.read(['(((a:1,b:2,c:3)x:4,(d:5)y:6)z:7);'])
      >>> res = t.to_array()
      >>> sorted(res.keys())
      ['child_index', 'id', 'id_index', 'length', 'name']
      >>> res['child_index']
      array([[4, 0, 2],
             [5, 3, 3],
             [6, 4, 5],
             [7, 6, 6]])
      >>> for k, v in res['id_index'].items():
      ...     print(k, v)
      ...
      0 a:1.0;

      1 b:2.0;

      2 c:3.0;

      3 d:5.0;

      4 (a:1.0,b:2.0,c:3.0)x:4.0;

      5 (d:5.0)y:6.0;

      6 ((a:1.0,b:2.0,c:3.0)x:4.0,(d:5.0)y:6.0)z:7.0;

      7 (((a:1.0,b:2.0,c:3.0)x:4.0,(d:5.0)y:6.0)z:7.0);

      >>> res['id']
      array([0, 1, 2, 3, 4, 5, 6, 7])
      >>> res['name']
      array(['a', 'b', 'c', 'd', 'x', 'y', 'z', None], dtype=object)