我正在尝试在 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)