【发布时间】:2018-07-19 20:25:04
【问题描述】:
我正在使用 genfromtxt 导入包含各种类型数据的庞大数据集。
我的原始代码运行良好(ucols 是我要加载的列的列表):
data = np.genfromtxt(fname,comments = '#', skip_header=1, usecols=(ucols))
我的一些值是字符串,所以为了避免输入 NaN,我尝试设置 dtype = None:
data = np.genfromtxt(fname, dtype = None,comments = '#', skip_header=1, usecols=(ucols))
现在由于某种原因,我只得到一列数据,即第一列。有人可以解释我做错了什么吗?
编辑:我现在明白我应该获得一个可以引用以获取整行值的一维结构化数组。但是我希望将我的数据作为一个 numpy 数组,是否可以将 genfromtxt 与 dtype = None 一起使用,并且仍然获得一个 numpy 数组而不是结构化数组,或者是否有一种快速的方法可以在两者之间进行转换。虽然第二种方法不是可取的,除非它可以快速有效,因为我移动的值通常比当前实例大得多。
【问题讨论】:
-
其实可以为
dtype定义一个类型列表,其长度必须等于使用的列数,例如dtype = (float, str, int, float)为4列。 -
我不一定知道输入数据的数据类型
-
使用
dtype=None它应该创建一个结构化数组,1d,但具有与usecols指定的一样多的字段。您对one column of data...的描述不清楚。更明确。 -
所以在我的例子中 usecols 是一个大小为 289 的值的列表,这正是我想要的。数据的大小为 (1989,289),输入的数据只有大小 (1989,)。这就是我说只输入一列数据(数据集的第一列)时的意思。
-
一个numpy数组总是有一个
dtype。通常,dtype 是数字是字符串。该化合物是一种概括。object是另一个,使数组更像list。
标签: python python-3.x numpy