7

私にはささいなことのように思えますが、aa[:,:]印刷/書き込み用のフォーマットされた文字列にnumpy配列(as)に属する一連の要素を挿入する効率的で「クリーンな」方法がまだありません。実際、次のような要素ごとの拡張仕様構文は次のとおりです。

formattedline= '%10.6f  %10.6f  %10.6f' % (aa[ii,0], aa[ii,1], aa[ii,2]) 
file1.write(formattedline+'\n')

作業しています。

しかし、他の短い解決策は見つかりませんでした。理由は次のとおりです。

formattedline= '%10.6f  %10.6f  %10.6f' % (float(aa[ii,:]))
file1.write(formattedline+'\n')

もちろん与える:TypeError: only length-1 arrays can be converted to Python scalars

また:

formattedline= '%10.6f  %10.6f  %10.6f' % (aa[ii,:]) 
file1.write(formattedline+'\n')

与える:TypeError: float argument required, not numpy.ndarray。イテレータを試してみましたが、成功しませんでした。

もちろん、これは、印刷する要素がいくつかある場合に興味深いものです。

だから:どうすればnumpy配列と文字列形式の方法で反復を組み合わせることができますか?

4

2 に答える 2

6

タプルに変換できます。

formattedline = '%10.6f  %10.6f  %10.6f' % ( tuple(aa[ii,:]) )

joinより一般的なケースでは、 :を使用できます。

formattedline = ' '.join('%10.6f'%F for F in aa[ii,:] )
于 2012-10-05T11:04:18.227 に答える
2

配列全体をファイルに書き込む場合は、np.savetxtを使用します。

np.savetxt(file1, aa, fmt = '%10.6f')

fmtパラメータは、単一のフォーマット、一連のフォーマット、または次のようなマルチフォーマットの文字列にすることができます。

'%10.6f  %5.6f  %d'
于 2012-10-05T11:32:02.550 に答える