python
1 2data = np.genfromtxt('./A.txt', delimiter='') 3h = data[:,0] 4x = data[:,1] 5y = data[:,2] 6n = 1 #横軸・縦軸の刻み間隔 7 8X = np.arange(math.floor(np.min(x)), math.ceil(np.max(x)) + n/2, n) #最終的な横軸 9Y = np.arange(math.floor(np.min(y)), math.ceil(np.max(y)) + n/2, n) #最終的な縦軸 10 11H = [[h[k] for k in range(len(h)) if X[i] <= x[k] < X[i+1] and Y[j] <= y[k] < Y[j+1]] for i in range(len(X)-1) for j in range(len(Y)-1)] #あるX・Yに入るHをlistに入れる 12 13 14H2 = [sum(H[l]) for l in range(len(H))] 15H2 = np.array(H2).reshape(len(X)-1,-1) #mesh化 16X2,Y2 = np.meshgrid(X[0:len(X)],Y[0:len(Y)]) #mesh化 17 18fig = plt.figure(figsize=(10, 8)) 19ax = fig.add_subplot(111) 20 21plt.xlabel('X2') #" 22plt.ylabel('Y2') #" 23plt.xlim(0,6) #" 24plt.ylim(0,6) #" 25 26m = ax.pcolormesh(X2, Y2, H2.T, cmap='tab20',edgecolors='w') 27fig.colorbar(m, label='bar') 28 29plt.show()
上記のコードでpcolormeshより2Dマップを作成しました。データのX, Y, Hより、範囲1ずつのX, Yに入ったHをそれぞれ合計してマップを作成するコードです。データは以下に示します。hが高さでx, yがそれぞれ横軸、縦軸の値です。
h x y
1 0.1 0.4
2 2.1 0.9
3 4.5 4.9
4 3.8 5.6
5 5.8 0.8
6 0.8 4.4
7 2.2 0.1
8 1.8 3.4
9 4.5 1.9
10 4.2 4.1
次に、横・縦それぞれ2ずつ、合計4マスに入ったHの合計をさらに合計(binまとめ)したいです。そして最終的には3×3のマス目になったマップを作成したいのですが、pcolormeshでbinがなさそうなので、他に良い方法はないでしょうか?
引数であるのであれば、引数で指定できればと思います。ないのであれば、別の関数(?)を使って作成したいのですが、どのように作成すれば簡単になりますか?
また、pythonでこのコードを実行するとデータ量が多いとかなり時間がかかるのですが、forやifを多用する場合はpythonではなくて他の言語を使ったほうが早く処理できますか?
pythonしかやったことがないので、今の所はpythonで書いています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/31 03:10