title: Why does hstack() copy data but hsplit() create a view on it?
body: <p>In NumPy, why does <code>hstack()</code> copy the data from the arrays being stacked:</p>
  
  <pre><code>A, B = np.array([1,2]), np.array([3,4])
  C = np.hstack((A,B))
  A[0]=99
  </code></pre>
  
  <p>gives for <code>C</code>:</p>
  
  <pre><code>array([1, 2, 3, 4])
  </code></pre>
  
  <p>whereas <code>hsplit()</code> creates a <em>view</em> on the data:</p>
  
  <pre><code>a = np.array(((1,2),(3,4)))
  b, c = np.hsplit(a,2)
  a[0][0]=99
  </code></pre>
  
  <p>gives for <code>b</code>:</p>
  
  <pre><code>array([[99],
         [ 3]])
  </code></pre>
  
  <p>I mean - what is the reasoning behind the implementation of this behaviour (which I find inconsistent and hard to remember): I accept that this happens because it's coded that way...</p>