不知道这是错误还是功能,但是如果我使用:
f_data = np.genfromtxt('file.dat', dtype=None, unpack=True)
其中file.dat
是具有几列的标准数据文件(即:http://pastebin.com/ihEW2dxS),结果不会像预期的那样设置unpack=True
转置。
例如,行f_data = np.loadtxt('file.dat', unpack=True)
按预期工作。
看起来像个错误,除非另行通知,否则将其标记为错误。
我对此进行了调查。
@ Gabriel-p代码的结果是一个形状(12,)的flex数组。 该代码在其上调用output.T
,但是由于它是一维的,因此是无操作的。
dtype=None
指定的最大问题是它将是flex数组。 每列都有一个单独的推断类型。 如果要真正转置此结果,则每一行都需要具有一个单独的类型。 AFAIK,唯一的方法是拥有齐次数组的列表或元组。
由于文本文件中的numCols << numRows,使用列表或元组应该没什么大不了的。 如果以这种方式实现,它将按照文档中指定的x, y, z = np.genfromtxt(...)
拆包,并解决@ Gabriel-p的问题。
但是, genfromtxt
已经超过600行。 有什么想法吗?
也被这个咬了。 我做了一个测试用例,看
https://github.com/hsgg/numpy.git
我也经历过 loadtxt
有点聪明:
if unpack:
if len(dtype_types) > 1:
# For structured arrays, return an array for each field.
return [X[field] for field in dtype.names]
else:
return X.T
为什么genfromtxt
不这样做?
关于此问题有任何更新吗? 自2014年以来似乎从未改变过。
几年前提出的@ moi90建议是正确的。 genfromtxt
应该和loadtxt
做同样的事情。
我认为这很容易解决,因此我将该问题标记为“良好的第一期”。
最有用的评论
我也经历过
loadtxt
有点聪明:为什么
genfromtxt
不这样做?