私が探しているものに近い質問と回答がいくつかありますが、この特定の問題に対するよりエレガントな解決策がないかどうか疑問に思っています: numpy (2D) 配列があり、それを印刷したい行ごとに行番号を前もって付けます - そしてもちろんうまくフォーマットされています。
このコードは、単純ですが書式設定なしで印刷を行います。
import numpy as np
A = np.zeros((2,3))
for i in range(2):
print i, A[i]
各行でフォーマットされた文字列を新たに構築することで、フォーマットされた出力を生成することもできます。
for i in range(2):
print "%4i "%(i)+" ".join(["%6.2f"%(v) for v in A[i]])
これは機能しますが、フォーマット文字列を一度だけ作成してから、各行に数値を「貼り付ける」方が読みやすく、おそらく効率的(?)である可能性があると考えました。
NVAR=A.shape[1]
fmt = "%4i" + NVAR*" %6.2f"
for i in range(2):
print fmt % (i, A[i])
書式設定された出力では float 要素を含むタプルが必要ですが、A[i] は ndarray であるため、これは失敗します。したがって、私の質問は「整数値と 1 次元の ndarray からタプルを作成するにはどうすればよいですか?」ということになります。私は試しました:
tuple( [i].extend([v for v in A[i]]) )
[v for v in A[i]]
しかし、それは機能しません (この式は正しく機能しますが、None を返します)。
それとも、ここで FORTRAN を考えすぎているのでしょうか。