カタン、Pythonでは?―― データをCSVに
正六角形の頂点19個を毎回コードの中に書くと場所をとる。上を見たり、下を見たりするときに邪魔。ということで、外に出すことにした。どうやって外のファイルを読み込むかを調べると、CSVファイルがいいらしい。いったん計算して出した頂点の位置、19行2列の数値をエクセルにコピペして、それをCSVで保存。改めて読み込む形にする。
import numpy as np
import pygame
t1 = np.loadtxt(fname='dataC2.csv', dtype=float, delimiter=",", skiprows=1)
t3 = np.array([[[0, 0], [-17.32, 10.00], [-17.32, 30.00], [0.00, 40.00],[17.32, 30.00],[17.32, 10.00]]])
t4 = np.arange(12).reshape(1,6,2)
for t0b in t1:
t0c = t0b + t3
t4 = np.append(t4, t0c, axis = 0)
t4 = np.delete(t4,0,0)
少しはすっきり。
ところで、numpyの3次元配列で要素を追加していく方法はいくつかあるらしいが、すっきりしたものがなかなか見つからない。上のコードは、1,6,2の3次元配列をひとつ作り、そこに付け足す形で次元の数を維持しているが、最期に、0番目の要素、つまり一番最初にあった要素を消さなければならないのが美しくない。空配列に追加していく方法もあるらしいが、どうだろう。
リストの方が簡単に追加していくことができる、という記事もあった。必要に応じてnumpy配列に変えればいいらしい。numpy配列とリストの変更が相互に簡単にできるのなら、それもありかな、と思う。
リストならどうなるかを考えてみよう。