2017-08-28 7 views
1

にnumpyの2次元配列を保存できません:あなたが見ることができるようには、私は二つの行列の連結した以下の2-D numpyの行列、持っているファイル

 >>> mnist1_train_final_data=np.hstack((y_train_mnist_ni,features_train_mnist1)) 
    >>> type(mnist1_train_final_data) 
    <type 'numpy.ndarray'> 
    >>> mnist1_train_final_data.dtype 
    dtype('S32') 
    >>> mnist1_train_final_data.shape 
     (1149, 129) 

を、それが2であります-d numpy配列。しかし、ときに私は、次のコマンドを使用して、それを保存しよう:

Traceback (most recent call last): File "<stdin>", line 1, in 
<module> File "/usr/lib/python2.7/site-packages/numpy/lib/npyio.py", 
line 1162, in savetxt 
    % (str(X.dtype), format)) TypeError: Mismatch between array dtype ('|S32') and format specifier 
('%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f,%5.2f') 

がどのように私は私の場合は2-D numpyの行列を保存することができます:

>>> np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%5.2f') 

それは私が次のエラーを示して?

+1

"%s"などの有効な文字列フォーマッタを通過しなければならないので、デフォルトのフォーマットは、文字列タイプに対して有効ではないことに注意してください? 'savetxt'は行を反復し、各行は' fmt%tuple(row) 'を行います。ここで' fmt'は 'mismatch'の文字列です。 129個の列のそれぞれに1つの '%f5.2'があります。 – hpaulj

答えて

1

S32は文字列型です。指定する書式は浮動小数点型です。文字列型を保存するには、savetxt"%s"フォーマッタを渡す必要があります。あなたあなたは文字列を格納するための配列を期待している

np.savetxt('test.txt', mnist1_train_final_data, delimiter=',', fmt='%s')