class_docstr: Persist ndarrays in an object by saving them to a zip file.
  
  :param zip_file: A zip file handle that the NumPy arrays will be saved to.
  :type zip_file: :class:`zipfile.ZipFile`
  
  
  .. note:
      The convention for persistent ids given by this class and its derived
      classes is that the name should take the form `type.name` where `type`
      can be used by the persistent loader to determine how to load the
      object, while `name` is human-readable and as descriptive as possible.
class_docstr_tok: ["Persist","ndarrays","in","an","object","by","saving","them","to","a","zip","file",".",":","param","zip_file",":","A","zip","file","handle","that","the","NumPy","arrays","will","be","saved","to",".",":","type","zip_file",":",":","class",":","`","zipfile.ZipFile","`","..","note",":","The","convention","for","persistent","ids","given","by","this","class","and","its","derived","classes","is","that","the","name","should","take","the","form","`","type.name","`","where","`","type","`","can","be","used","by","the","persistent","loader","to","determine","how","to","load","the","object",",","while","`","name","`","is","human-readable","and","as","descriptive","as","possible","."]
code: def __init__(self, zip_file):
      self.zip_file = zip_file
      self.count = 0
      self.seen = {}
  
imports: import os
  import pickle
  import sys
  import tempfile
  import zipfile
  from collections import defaultdict
  from contextlib import closing
  from io import BytesIO
  from pickle import HIGHEST_PROTOCOL
  import numpy
  import pytensor
  from pytensor.compile.sharedvalue import SharedVariable
label_desc: Use image node_id 1 to create a new PersistentNdarrayID object  with example: obj = PersistentNdarrayID(zip_file)