2017-07-05 8 views
0

csvファイルからデータを読み取ろうとしています。 7つの列があります。列インデックス付き5は文字列型で、列の残りは浮動小数点型です。浮動体と文字列を適切な形式で読み取る

フロートデータを読み込むために次のコマンドを実行すると、出力は適切な形式になります。その後、

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

出力は(500L、6L)の形状に

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]] 

ある

しかし、私は、私は、次の使用文字列型である列番号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 

今、出力が

です(500L)

の形状に

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、6L)の形状を持っていただけのよう(500L、7L)にこのdatastr形状を取得する必要があります

どうすればいいですか?

おかげ

+0

その 'datastr'の' dtype'を見てください。 7つのフィールドを持つ1次元構造化配列を作成しました。これは、浮動小数点数と文字列 '列'の組み合わせを保持できる唯一の方法です。 'datastr ['c3']'という名前でフィールドにアクセスします。そのミックスが気に入らない場合は、ファイルを2回読み込み、1回は6つの浮動列を取得し、もう1回は文字列1を読み込むことを検討してください。あなたは2つの配列で同じデータを取得します。 – hpaulj

+0

ありがとうございます。私はadaboostクラシファイアでデータを使用したい。 cross_val_scoreでは、入力データセットを指定する必要があります。すべてのデータが1つのデータ構造にあるときに私は指定 'CLF = AdaBoostClassifier(n_estimators = 100) スコア= cross_val_score(CLF、データ、target_final) C = scores.mean()'。しかし、2つのデータセットでは、どのようにcross_val_scoreにそれを供給しますか?ご覧のとおり、私は初心者です。 – Confused

+0

分類子はどのような配列を取ることができますか?構造化された配列を取ることができますか、それとも均一なdtypeを持つ2次元配列でなければなりませんか?どのように文字列と浮動小数点数の組み合わせを扱うのですか? – hpaulj

答えて

0

datastrの要素は、あなたがhereでそれについていくつかの情報を見つけることができ、<type 'numpy.void'>です。

関連する問題