値が9列3行に分割されたファイルtestforce.dat
があります。最初の3桁は次のとおりです。列を交互に選択して配列を掛ける
p1 p2 p3 f1 f2 f3 r1 r2 r3
18 5 27 20 21 8 14 12 25
9 26 23 1 4 10 7 16 24
19 22 15 13 17 6 11 2 3
私はこのファッションの100のファイルを持っています。
ファイルforce_00000.dat
ベクトルg = [sum(p1*f1), sum(p2*f2), sum(p3*f3)]
を計算しますが、次のファイルforce_00001.dat
のベクトルは他の列h = [sum(p1*r1), sum(p2*r2), sum(p3*r3)]
を使用する必要があります。
現時点ではglob関数を使用してファイルを配列に読み込みます。すべての行を1つの配列に格納します。 私は私の交互配列の乗算が行わ取得する方法を確認していないと任意の提案をいただければ幸いです:)
import numpy as np
import glob
i = 100
for x in range(0,int(i)):
## turns x into a string and adds if necessary "0" to achieve a fixed digit number;
y = str(x).zfill(5)
## the structure of the forcefile is "force_[00000-00099]";
files = sorted(glob.glob('.//results/force/force_%s.dat' % y))
column_names=('#position')
print files
## loads the file data into arrays
arrays=[np.loadtxt(filename) for filename in files]
print arrays
編集:私は最初のファイルのロードをテストした:
b=np.array(arrays)
print b.shape
そして、私は(取得1,3,9)を作成しました。
EDIT2:
[[[ 360. 105. 216.]
[ 9. 104. 230.]
[ 247. 374. 90.]]]
私が持っている(P11とF11を意味します。これは次の出力を生成し
xposition=[np.loadtxt(filename,usecols= (0,1,2)) for filename in files]
xforce1=[np.loadtxt(filename,usecols= (3,4,5)) for filename in files]
print xposition
print xforce1
xp=np.asarray(xposition)
xf1=np.asarray(xforce1)
print xp
g=np.multiply(xp,xf1)
print g
:私は、所望の値を乗算し、 "usecols" を使用してする考えを持っていました最初の行の値、2番目の行からのp21 ...)
[[[p11*f11 p12*f12 p13*f13]
[p21*f21 p22*f22 p23*f23]
[p31*f31 p32*f32 p33*f33]]]
私はまるでドンのようですe少なくとも1つのファイル。それは完全に初心者質問ですが、私はまだのpythonとそうfamilliarないです場合:)
問題について交互に
p11*f11+p21*f21+p31*f31= g1
p12*f12+p22*f22+p32*f32= g2
p13*f13+p23*f23+p33*f33= g3
申し訳ありません:希望グラム(G1、G2、G3)は、のようになります。値ループの "i"が偶数であるかどうかをチェックするif関数の使用について考えていました
1つのファイルリグに負荷をかけましょうhtの最初の。ヘッダーが正しく表示されたら、3行9列の配列になります。形状(3,9)、およびdtype of floatを指定します。それを手に入れますか? – hpaulj
okもう一度チェックしました: >>> b = np。配列(配列) >>> print b.shape 私は(1,3,9)... –