title: How to return a view of several columns in numpy structured array
body: <p>I can see several columns (<code>fields</code>) at once in a <code>numpy</code> structured array by indexing with a list of the field names, for example</p>
  
  <pre><code>import numpy as np
  
  a = np.array([(1.5, 2.5, (1.0,2.0)), (3.,4.,(4.,5.)), (1.,3.,(2.,6.))],
          dtype=[('x',float), ('y',float), ('value',float,(2,2))])
  
  print a[['x','y']]
  #[(1.5, 2.5) (3.0, 4.0) (1.0, 3.0)]
  
  print a[['x','y']].dtype
  #[('x', '&lt;f4') ('y', '&lt;f4')])
  </code></pre>
  
  <p>But the problem is that it seems to be a copy rather than a view:</p>
  
  <pre><code>b = a[['x','y']]
  b[0] = (9.,9.)
  
  print b
  #[(9.0, 9.0) (3.0, 4.0) (1.0, 3.0)]
  
  print a[['x','y']]
  #[(1.5, 2.5) (3.0, 4.0) (1.0, 3.0)]
  </code></pre>
  
  <p>If I only select one column, it's a view:</p>
  
  <pre><code>c = x['y']
  c[0] = 99.
  
  print c
  #[ 99.  4.   3. ]
  
  print a['y']
  #[ 99.  4.   3. ]
  </code></pre>
  
  <p>Is there any way I can get the view behavior for more than one column at once?</p>
  
  <p>I have two workarounds, one is to just loop through the columns, the other is to create a hierarchical <code>dtype</code>, so that the one column actually returns a structured array with the two (or more) fields that I want.  Unfortunately, <code>zip</code> also returns a copy, so I can't do:</p>
  
  <pre><code>x = a['x']; y = a['y']
  z = zip(x,y)
  z[0] = (9.,9.)
  </code></pre>