Difference Between numpy.genfromtxt and numpy.loadtxt, and Unpack

function, numpy, python, python-2.7

Solution

You are correct. Using `np.genfromtxt` gives you some options like the parameters `missing_values`, `filling_values` that can help you dealing with an incomplete `csv`. Example:

1,2,,,5
6,,8,,
11,,,,

Could be read with:

filling_values = (111, 222, 333, 444, 555) # one for each column
np.genfromtxt(filename, delimiter=',', filling_values=filling_values) 
#array([[   1.,    2.,  333.,  444.,    5.],
#       [   6.,  222.,    8.,  444.,  555.],
#       [  11.,  222.,  333.,  444.,  555.]])

The parameter `unpack` is useful when you want to put each column of the text file in a different variable. Example, you have the text file with columns `x, y, z`, then:

x, y, z = np.loadtxt(filename, unpack=True)

Note that this works the same as

x, y, z = np.loadtxt(filename).T

By default iterating over a 2-D array means iterating over the lines, that's why you have to transpose or use `unpack=True` in this example.

Problem

I am curious to know the difference between the two functions alluded to in the title of this thread. From the website containing the documentation, it says, "`numpy.loadtxt` [is] [an] equivalent function when no data is missing." What exactly is meant by this? Does this mean, for instance, if I have a csv file that has a blank column between two columns containing data, I should not `numpy.loadtxt`? Also, what does this mean, ``` "unpack : bool, optional If True, the returned array is transposed, so that arguments may be unpacked using x, y, z = loadtxt(...)" ``` I am not quite certain as to what this means. I'd appreciate your help, thank you!

Original source