numpy.genfromtxt和numpy.loadtxt之间的区别,以及Unpack

Mac*_*ack 15 python numpy function python-2.7

我对python很新 - 实际上,一般来说是编程的新手,虽然恐怕我不能永远使用这个借口 - 并且很想知道这个线程标题中提到的两个函数之间的区别.从包含文档的网站上可以看出,"当没有数据丢失时,numpy.loadtxt [是] [等]函数." 究竟是什么意思?这是否意味着,例如,如果我有一个csv文件在包含数据的两列之间有一个空白列,我不应该numpy.loadtxt.

这也是什么意思,

"unpack : bool, optional
If True, the returned array is transposed, so that arguments may be unpacked using x, y, z = loadtxt(...)"
Run Code Online (Sandbox Code Playgroud)

我不太确定这意味着什么.

我很感谢你的帮助,谢谢!

Sau*_*tro 12

你是对的.使用np.genfromtxt为您提供了一些选项,如参数missing_values,filling_values可以帮助您处理不完整的csv.例:

1,2,,,5
6,,8,,
11,,,,
Run Code Online (Sandbox Code Playgroud)

可以阅读:

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.]])
Run Code Online (Sandbox Code Playgroud)

unpack当您想要将文本文件的每一列放在不同的变量中时,该参数很有用.例如,您有包含列的文本文件x, y, z,然后:

x, y, z = np.loadtxt(filename, unpack=True)
Run Code Online (Sandbox Code Playgroud)

请注意,这与...相同

x, y, z = np.loadtxt(filename).T
Run Code Online (Sandbox Code Playgroud)

默认情况下,迭代2-D数组意味着迭代线,这就是你必须unpack=True在这个例子中转置或使用的原因.

  • 另一个只有`np.genfromtxt`的好选项:如果你想要一个带字段的结构化数组,因为它允许你说`names = True`,字段名将自动从文件的第一行生成. (3认同)