将excel文件中的数据导入为numpy数组

时间:2018-03-26 17:55:58

标签: python-3.x

我有一个包含给定列名的250个变量(整数和浮点数)的.csv文件。第一列是序列号,最后一列是'标签' 我使用github中的代码将其导入为numpy数组:

from numpy import genfromtxt
train_data = genfromtxt("file.csv", delimiter=',',names=True,dtype=float)

输出结果为:

[ ( 0.,  25.20824887, -16.745.......,) (( 1., -86.93144987,   0.42822719, ...)]

行之间没有逗号分隔。

如何将输出转换为正确的numpy数组格式,不包括第一列,并将最后一列存储到不同的' Y'变量

我正在使用此代码:

  np.reshape(train_data,(train_data.size, len(train_data[0])))

它将错误指定为:

cannot reshape array of size 7200 into shape (7200,252)

1 个答案:

答案 0 :(得分:0)

您可以尝试使用.read_csv()方法将其作为pandas数据帧导入。然后对.read_csv()生成的数据帧使用DataFrame.as_matrix()方法将实际值转换为numpy数组。不幸的是,.as_matrix()方法不会保留每个列dtype,如果它们不同,那么只有在你知道铸造不会成为问题时才小心使用它。读这个: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.as_matrix.html

编辑:  " dtype将是一个较低的共同分母dtype(隐式向上转换);也就是说,如果dtypes(甚至是数字类型)是混合的,那么将选择容纳所有dtypes的那个......例如。如果dtypes是float16和float32,则dtype将向上转换为float32 ...通过numpy.find_common_type约定,混合int64和uint64将导致float64 dtype。"

因此,在您的情况下,它很可能会将所有值都转换为float64。