2016-04-05 120 views
3

np.concat()メソッドで2つの有効な配列を連結しようとしています。NumPy:連結中にエラー - ゼロ次元配列を連結できません

マイコード:

print X_train.shape, train_names.shape 
X_train = np.concatenate([train_names,X_train], axis=0) 

出力:あなたが見ることができるように

(3545, 93355) (3545, 692) 


ValueError        Traceback (most recent call last) 
<ipython-input-58-59dc66874663> in <module>() 
    1 print X_train.shape, train_names.shape 
----> 2 X_train = np.concatenate([train_names,X_train], axis=0) 


ValueError: zero-dimensional arrays cannot be concatenated 

、配列の形状が並ぶ、まだ私はこの奇妙なエラーを取得しています。どうして?

編集:私もaxis=1で試してみました。同じ結果 EDIT 2:EQのデータ型は.astype(np.float64)を使用します。同じ結果。

+0

は、私はまた、入力の 'dtype'をチェックします。 'np.concatenate'への入力の中の何かが' zero-dimensional'です。私たちはそれを見ることはできませんが、あなたは十分な診断プリントを追加すればいいでしょう。 – hpaulj

+0

私はdtypesを同等にしようとしました。それと同じ結果。おそらく、私のバージョンのNumpy 1.10.4のバグです。もっともらしい? –

+1

これは小さな配列でも機能しますか? – hpaulj

答えて

8

はこのエラーを生成します。

In [162]: from scipy import sparse 
In [163]: x=sparse.eye(3) 
In [164]: x 
Out[164]: 
<3x3 sparse matrix of type '<class 'numpy.float64'>' 
    with 3 stored elements (1 diagonals) in DIAgonal format> 
In [165]: np.concatenate((x,x)) 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-165-0b67d0029ca6> in <module>() 
----> 1 np.concatenate((x,x)) 

ValueError: zero-dimensional arrays cannot be concatenated 

これを行うにはsparse機能があります。

In [168]: sparse.hstack((x,x)).A 
Out[168]: 
array([[ 1., 0., 0., 1., 0., 0.], 
     [ 0., 1., 0., 0., 1., 0.], 
     [ 0., 0., 1., 0., 0., 1.]]) 
In [169]: sparse.vstack((x,x)).A 
Out[169]: 
array([[ 1., 0., 0.], 
     [ 0., 1., 0.], 
     [ 0., 0., 1.], 
     [ 1., 0., 0.], 
     [ 0., 1., 0.], 
     [ 0., 0., 1.]]) 
0

リストをリストではなくタプルとして渡します。 np.concatenatesparsescipyに行列を適用 X_train = np.concatenate((train_names,X_train), axis=0)

+0

私は試しました。同じ結果。 –

+0

このコンテキストでは、リストとタプルは同じように扱われます。 – hpaulj

関連する問題