2017-05-15 4 views
-1

私はPython 3.6を使用していますが、配列を分割したいのですが、ロードするものが見つかりました。array第2次元はありません。csvファイルからロードされた配列を分割できません

私が使用

path1 = 'table1.csv' 
data1 = np.loadtxt(path1, dtype=[('id', int),('VAR1', int),('VAR2', int),('VAR3', float),('OUTCOME', int)], delimiter=',', skiprows=1) 

私はそれを分割しようとする、または私は私の形状が読み込ま取得したいとき、私は間違って取得:

>>> data1.shape 
(24999,) 

それは第二の次元を持っていないので、 、私はちょうど4列目でベクトルを分割したいのですが、x寸法が空であるsicne、私はそれを行うことはできません

>>>numpy.split(data1, (4,), axis=1) 

を使用することはできません。どのように配列の形状を作るように:

(24999, 5) 

2次元を取得し、配列を分割するには? は、私は、データを分割し、

x,y=np.split(data, (4,), axis=1) 

xがX1、X2×3 ...パラメータとyとの結果であると、私はxからモデルを学習することができ返しますことを期待しています。

+0

構造化された配列型としてデータを読み込むので、1次元になります。なぜ、 'axis = 1'なしで分割しないのですか? –

+0

以来、私は行ではなく列で分割したい。 @ juanpa.arrivillaga – user504909

+0

しかし、structredデータ型を使用しました。これは1次元です。 –

答えて

1

コメントで述べたように、そのdtypeであなたは「行」と「フィールド」ではなく、列を持っています。フィールドは、番号ではなく名前でアクセスされます。フィールド内ではsplitは機能しません。

data1['OUTCOME']で5番目のフィールドにアクセスできます。あなたは名前のリストで列のセットにアクセスすることができます。 data1[['VAR1','VAR2','VAR3']].copy()copyは必ずしも必要ではありませんが、使用する準備ができています。

また、2つのステップでファイルをロードし、usecolsを使用して異なる列を選択します。それに応じてdtypeを調整します。

dtype=floatでロードし、(n,5)浮動小数点配列を取得します。次に、列分割を実行できます。

0

axis=1(4列目に分割したいという意味)を設定しているので、実際にはベクトルを行ベクトルとして使いたいと思うようです。なぜ2番目の次元を追加しないのですか?あなたは、このように

>>> data1 = data1.reshape((1,data1.shape[0])) 
>>> numpy.split(data1, (4,), axis=1) 

あるいは、別のソリューションをしたいことがあり、axisパラメータ

>>> data1 = np.loadtxt(path1, dtype=[('id', int),('VAR1', int),('VAR2', int),('VAR3', float),('OUTCOME', int)], delimiter=',', skiprows=1) 
>>> numpy.split(data1, (4,)) 

またはDTYPEを指定しないようにしてくださいを設定されていません。 2番目の処理段階でIDを整数に変換することができます。

>>> data1 = np.loadtxt(path1, delimiter=',', skiprows=1) 
+0

はい、私はベクトルを4列目に分割したいだけですが、x次元は空ですが、私はそれを行うことはできません。 – user504909

+0

質問を編集し、plsをリフレッシュします。私は生のものではなく列で分割したい。 – user504909

+0

私はあなたのやり方をすることができません。実際には、1つのテーブルではなく2つのテーブルからのデータが2つのテーブルに加わり、完全なパラメータを取得し、入出力に配列に分割する必要があるからです。 – user504909

関連する問題