【发布时间】: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) 的全浮点示例中一样
我该怎么做?
谢谢
【问题讨论】:
-
查看
dtype的datastr。您已经创建了一个包含 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