title: Unable to load non-arrays from an npz file
body: <p>I need to save several numpy arrays and Python objects to disk.I  want to completely minimize the I/O. I don't mind if the loader or saver has to do any lifting in memory, but the <strong>I/O footprint</strong> (actual access) should be the lowest, since we have problems in our cluster when many jobs access the filesystem at the same time.</p>
  
  <p>I tried with:</p>
  
  <pre><code>import numpy as np
  
  my_data = dict()
  
  my_data['r1'] = np.random.randint(3, size=(100,200))
  my_data['rs'] = np.random.randint(3, size=(50,400))
  
  my_data['annotation_info'] = 'Two random arrays'
  my_data['current_date']    = 'July 28' 
  
  np.savez('test.npz', my_data = my_data)
  </code></pre>
  
  <p>But when I load this, I get:</p>
  
  <pre><code>temp = np.load('test.npz')
  my_data = temp['my_data']
  my_data['r1']
  
  ValueError: field named features not found
  </code></pre>
  
  <p>Also, <code>my_data</code> seems to now be an array, with <code>my_data.shape</code> returning <code>()</code>. Oddly enough, if I do:</p>
  
  <pre><code>print(my_data)
  </code></pre>
  
  <p>I get:</p>
  
  <pre><code>{'current_date': 'July 28', 'rs': array([[0, 1, 0, ..., 0, 2, 0],
         [1, 1, 1, ..., 1, 1, 0],
         [2, 1, 1, ..., 1, 1, 0],
         ..., 
         [1, 0, 2, ..., 2, 0, 1],
         [0, 2, 0, ..., 1, 1, 0],
         [1, 1, 0, ..., 1, 1, 1]]), 'annotation_info': 'Two random arrays', '
  r1': array([[2, 0, 1, ..., 0, 2, 2],                                      
         [0, 0, 2, ..., 0, 2, 1],
         [2, 2, 2, ..., 1, 0, 0],
         ..., 
         [0, 2, 1, ..., 2, 0, 0],
         [0, 0, 1, ..., 2, 1, 0],
         [2, 1, 2, ..., 0, 2, 2]])}
  </code></pre>
  
  <h1>Update</h1>
  
  <p>If I do what unutbu recommends:</p>
  
  <pre><code>np.savez('test.npz', **my_data)
  my_data = np.load('test.npz')
  my_variable = my_data['annotation_info']
  </code></pre>
  
  <p><code>my_variable</code> is not a string, e.g. <code>my_variable.upper()</code> returns: </p>
  
  <pre><code>numpy.ndarray object has no attribute 'upper' 
  </code></pre>
  
  <p>In fact <code>type(my_variable)</code> returns:</p>
  
  <pre><code>numpy.ndarray
  </code></pre>
  
  <p>But again, <code>my_variable[0]</code> throws an error, and <code>my_variable.shape</code> returns <code>()</code> (which seems to be a <a href="https://stackoverflow.com/questions/773030/why-are-0d-arrays-in-numpy-not-considered-scalar"><code>0-Rank array</code></a>)</p>
  
  <p>How can I access the actual object stored in the array?</p>