【问题标题】:Reading float as well as string in proper format以正确的格式读取浮点数和字符串
【发布时间】:2017-12-08 13:17:12
【问题描述】:

我正在尝试从 csv 文件中读取数据。有7列。索引为 5 的列是字符串类型,而其余列是浮点数。

当我给出以下命令只是为了读取浮点数据时,输出格式正确。

data = np.loadtxt('data.csv', delimiter=',', usecols= (0,1,2,3,4,6))
print "\ndata=\n",data

输出是

data=
 [[  3.00000000e+00   9.46000000e+01   1.80180000e+02   3.28900000e+01
    6.80685824e+00   3.70000000e-01]
...,
 [  3.00000000e+00   1.33200000e+02   2.51460000e+02   2.01600000e+01
    5.77236048e+00  -2.70000000e-01]]

形状为(500L,6L)

但是当我尝试读取所有列,包括字符串类型的列号 5 时,我使用以下代码:

    datastr = np.loadtxt('data.csv', delimiter=',',dtype={'names': ('c1','c2','c3','c4','c5','c6','c7'),
                                                                            'formats':('f4','f4','f4','f4','f4','S10','f4')})
print "\ndatastr=\n",datastr

现在输出是

datastr= 
[ ( 3.,   94.59999847,  180.17999268,  32.88999939,   6.80685806, 'Large',  0.37      ) ... ( 3.,  133.19999695,  251.46000671,  20.15999985,   5.77236032, 'Small', -0.27000001)]

形状为 (500L,)

但是我需要将这个 datastr 形状设置为 (500L,7L),就像在我的形状为 (500L,6L) 的全浮点示例中一样

我该怎么做?

谢谢

【问题讨论】:

  • 查看dtypedatastr。您已经创建了一个包含 7 个字段的一维结构化数组。这是您可以混合使用浮动和字符串“列”的唯一方法。您可以按名称访问字段,datastr['c3']。如果您不喜欢这种混合,请考虑加载文件两次,一次获取 6 个浮点列,一次获取字符串一个。您将获得相同的数据,但在 2 个数组中。
  • 谢谢。我想在 adaboost 分类器中使用数据。对于 cross_val_score,我需要指定输入数据集。当所有数据都在一个数据结构中时,我只需指定'clf = AdaBoostClassifier(n_estimators=100) scores = cross_val_score(clf, data, target_final) c=scores.mean()'。但是对于两个数据集,我如何将其提供给 cross_val_score。如您所见,我是新手。
  • 分类器可以取什么样的数组?它可以采用结构化数组,还是必须是具有统一 dtype 的二维数组(例如所有浮点数)?它如何处理字符串和浮点数的混合?

标签: arrays python-2.7 ipython


【解决方案1】:

datastr 中的元素是<type 'numpy.void'>,您可以在here 找到有关它的一些信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多