title: Will numpy read the whole data every time it iterates?
body: <p>I have a very large data file consists of N*100 real numbers, where N is very large. I want to read the data by columns. I can read it as whole then manipulate it column by column:</p>
  
  <pre><code>data=np.loadtxt(fname='data.txt')
  for i in range(100):
      np.sum(data[:,i])
  </code></pre>
  
  <p>Or I can read it column by column and expecting this will save memory and be fast:</p>
  
  <pre><code>for i in range(100):
      col=np.loadtxt(fname='data.txt',usecols=(i,))
      np.sum(col)
  </code></pre>
  
  <p>However, the second approach seems not to be faster. <strong>Is it because every time the code read the whole data and extract the desired the column?</strong> So it is 100 times slower than the first one. <strong>Is there any method to read one column after another but much faster?</strong></p>
  
  <p>If I just want to get the 100 number at last row from the file, <strong>reading the whole col and get the last elements is not wise choice, how to achieve this?</strong></p>