pra*_*gma 3 python numpy genfromtxt
我正在尝试在 NumPy 数组中加载一个 csv 文件以进行机器学习。到目前为止,我一直使用 int 或 float 数据,但我当前的 csv 包含 string、float 和 int,所以我在 dtype 参数方面遇到了一些麻烦。我的数据集有 41188 个样本和 8 个特征,例如:
47;"university.degree";"yes";176;1;93.994;-36.4;4.857;"no"
Run Code Online (Sandbox Code Playgroud)
我知道如果我指定 dtype=None 类型将由每列的内容确定:
data = np.genfromtxt(filename, dtype=None, delimiter=";", skip_header=1)
Run Code Online (Sandbox Code Playgroud)
但它显然不起作用。首先, genfromtxt 的结果是一个具有以下形状的 numpy ndarray:
In [2]: data.shape
Out[2]: (41188,)
Run Code Online (Sandbox Code Playgroud)
虽然我期待 (41188,8)
相反,如果我使用默认的 dtype:
data2 = np.genfromtxt(filename, delimiter=";", skip_header=1)
Run Code Online (Sandbox Code Playgroud)
我获得以下数据形状:
In [4]: data2.shape
Out[4]: (41188,8)
Run Code Online (Sandbox Code Playgroud)
其次,使用 dtype=None 我获得以下弃用警告:
VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.
Run Code Online (Sandbox Code Playgroud)
我可以通过使用来修复(是否正确?):
encoding='ASCII'
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
带有 2 个样本线副本:
In [140]: data = np.genfromtxt(txt, dtype=None, delimiter=';', encoding=None)
In [141]: data
Out[141]:
array([(47, '"university.degree"', '"yes"', 176, 1, 93.994, -36.4, 4.857, '"no"'),
(47, '"university.degree"', '"yes"', 176, 1, 93.994, -36.4, 4.857, '"no"')],
dtype=[('f0', '<i8'), ('f1', '<U19'), ('f2', '<U5'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<f8'), ('f6', '<f8'), ('f7', '<f8'), ('f8', '<U4')])
In [142]: data.shape
Out[142]: (2,)
In [143]: data.dtype
Out[143]: dtype([('f0', '<i8'), ('f1', '<U19'), ('f2', '<U5'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<f8'), ('f6', '<f8'), ('f7', '<f8'), ('f8', '<U4')])
Run Code Online (Sandbox Code Playgroud)
这是一个普通的结构化数组 -data是一个具有 8 个字段的一维数组。这些字段dtype与每列共有的浮点数、整数或字符串类型相匹配。
您可以按名称而不是列号访问字段:
In [144]: data['f0']
Out[144]: array([47, 47])
In [145]: data['f1']
Out[145]: array(['"university.degree"', '"university.degree"'], dtype='<U19')
Run Code Online (Sandbox Code Playgroud)
请注意,我包含了encoding=None. 我不完全确定何时需要这样做,但很容易包含在内。
| 归档时间: |
|
| 查看次数: |
3253 次 |
| 最近记录: |