sh.kyoto-u score 13
2018/11/13 11:12 投稿
python(numpy)でloopを使った全計算結果をcsvファイルに保存する方法 |
### 前提・実現したいこと |
大学で研究の過程でクリギングという地球統計学の分析手法のプログラムを作成しています。 |
pythonを始めて1週間の未熟者ですが、どうかお力をお貸しください。 |
3301deta.csvというファイルには21行3列のx,y,z値が入っています。 |
120行3列で計算結果を抽出したいのですが、loopを使っているせいか、csvファイルに計算結果を抽出すると最終行のみ表示されてしまいます。 |
どのようにプログラムを変更すれば計算結果すべてがcsvファイルに表示できるようになるでしょうか。よろしくお願いいたします。 |
### 該当のソースコード |
```python |
# 標元データのファイル名を指定する |
file_name = '3301deta.csv' |
#ボーリングの本数 |
bn = 21 |
param[3] = 2332 |
param[4] = 1512 |
# 元データを読み込み、配列に格納する |
source_arr = np.genfromtxt(file_name, delimiter=',', skip_header=1) |
param[3] = 2332 |
param[4] = 1512 |
#最尤推定値の計算 |
#準備 |
def vario(a): |
b = squareform(pdist(a[:, 0:2], 'euclidean')) |
return b |
l_vario = vario(source_arr) |
#モデル近似後のバリオグラムの行列 |
a = np.exp(l_vario/param[3]*(-1)) |
h_vario = param[4]*(1-a) |
#行列に1と0を追加 |
c = np.append(h_vario, [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]], axis=0) |
d = np.append(c, [[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[0]], axis=1) |
#逆行列を求める |
e = np.linalg.inv(d) |
#求める推定値の座標 |
x = np.arange(-7130, -6680, 3.75) |
x1 = x[:, np.newaxis] |
y = np.arange(-262730, -261530, 10) |
y1 = y[:, np.newaxis] |
x1y1 = np.hstack([x1,y1]) |
for num in range (0,120) : |
xy0 = x1y1[num, ] |
xy1 = np.tile(xy0, (21,1)) |
xydata1 = np.loadtxt("3301deta.csv", delimiter=",", skiprows=1,) |
xydata=np.delete(xydata1, [2], axis=1) |
xy = xy1-xydata |
#距離 |
xys1 = np.delete(xy,[1],axis=1) |
xys2 = np.delete(xy,[0],axis=1) |
xys3 = np.power(xys1, 2) |
xys4 = np.power(xys2, 2) |
xys5 = xys3 + xys4 |
xys6 = np.sqrt(xys5) |
#バリオグラム近似 |
xyv1 = np.exp(xys6/param[3]*(-1)) |
xyv2 = param[4]*(1-xyv1) |
xyv3 = np.append(xyv2, [[1]], axis=0) |
#逆行列との積 |
f = np.dot(e,xyv3) |
h = f[:bn,] |
#推定値算出 |
i = np.delete(xydata1, [0,1], axis=1) |
j = i * h |
est = np.sum(j) |
#推定誤差標準偏差 |
k = h * xyv2 |
sig2 = np.sum(k) |
sig = np.sqrt(sig2) |
sigp = est + sig |
sigm = est - sig |
res = np.array([est, sigp, sigm]) |
np.savetxt("extract.csv", res, delimiter=",") |
``` |
sh.kyoto-u score 13
2018/11/13 11:12 投稿
python(numpy)でloopを使った全計算結果をcsvファイルに保存する方法 |
### 前提・実現したいこと |
大学で研究の過程でクリギングという地球統計学の分析手法のプログラムを作成しています。 |
pythonを始めて1週間の未熟者ですが、どうかお力をお貸しください。 |
3301deta.csvというファイルには21行3列のx,y,z値が入っています。 |
120行3列で計算結果を抽出したいのですが、loopを使っているせいか、csvファイルに計算結果を抽出すると最終行のみ表示されてしまいます。 |
どのようにプログラムを変更すれば計算結果すべてがcsvファイルに表示できるようになるでしょうか。よろしくお願いいたします。 |
### 該当のソースコード |
```python |
# 標元データのファイル名を指定する |
file_name = '3301deta.csv' |
#ボーリングの本数 |
bn = 21 |
# 元データを読み込み、配列に格納する |
source_arr = np.genfromtxt(file_name, delimiter=',', skip_header=1) |
param[3] = 2332 |
param[4] = 1512 |
#最尤推定値の計算 |
#準備 |
def vario(a): |
b = squareform(pdist(a[:, 0:2], 'euclidean')) |
return b |
l_vario = vario(source_arr) |
#モデル近似後のバリオグラムの行列 |
a = np.exp(l_vario/param[3]*(-1)) |
h_vario = param[4]*(1-a) |
#行列に1と0を追加 |
c = np.append(h_vario, [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]], axis=0) |
d = np.append(c, [[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[0]], axis=1) |
#逆行列を求める |
e = np.linalg.inv(d) |
#求める推定値の座標 |
x = np.arange(-7130, -6680, 3.75) |
x1 = x[:, np.newaxis] |
y = np.arange(-262730, -261530, 10) |
y1 = y[:, np.newaxis] |
x1y1 = np.hstack([x1,y1]) |
for num in range (0,120) : |
xy0 = x1y1[num, ] |
xy1 = np.tile(xy0, (21,1)) |
xydata1 = np.loadtxt("3301deta.csv", delimiter=",", skiprows=1,) |
xydata=np.delete(xydata1, [2], axis=1) |
xy = xy1-xydata |
#距離 |
xys1 = np.delete(xy,[1],axis=1) |
xys2 = np.delete(xy,[0],axis=1) |
xys3 = np.power(xys1, 2) |
xys4 = np.power(xys2, 2) |
xys5 = xys3 + xys4 |
xys6 = np.sqrt(xys5) |
#バリオグラム近似 |
xyv1 = np.exp(xys6/param[3]*(-1)) |
xyv2 = param[4]*(1-xyv1) |
xyv3 = np.append(xyv2, [[1]], axis=0) |
#逆行列との積 |
f = np.dot(e,xyv3) |
h = f[:bn,] |
#推定値算出 |
i = np.delete(xydata1, [0,1], axis=1) |
j = i * h |
est = np.sum(j) |
#推定誤差標準偏差 |
k = h * xyv2 |
sig2 = np.sum(k) |
sig = np.sqrt(sig2) |
sigp = est + sig |
sigm = est - sig |
res = np.array([est, sigp, sigm]) |
np.savetxt("extract.csv", res, delimiter=",") |
``` |
sh.kyoto-u score 13
2018/11/13 11:08 投稿
python(numpy)でloopを使った全計算結果をcsvファイルに保存する方法 |
### 前提・実現したいこと |
大学で研究の過程でクリギングという地球統計学の分析手法のプログラムを作成しています。 |
pythonを始めて1週間の未熟者ですが、どうかお力をお貸しください。 |
3301deta.csvというファイルには21行3列のx,y,z値が入っています。 |
loopを使っているせいか、csvファイルに計算結果を抽出すると最終行のみ表示されます。 |
どのようにプログラムを変更すれば計算結果すべてがcsvファイルに表示できるようになるでしょうか。 |
よろしくお願いいたします。 |
120行3列で計算結果を抽出したいのですが、loopを使っているせいか、csvファイルに計算結果を抽出すると最終行のみ表示されてしまいます。 |
どのようにプログラムを変更すれば計算結果すべてがcsvファイルに表示できるようになるでしょうか。よろしくお願いいたします。 |
### 該当のソースコード |
```python |
# 標元データのファイル名を指定する |
file_name = '3301deta.csv' |
#ボーリングの本数 |
bn = 21 |
# 元データを読み込み、配列に格納する |
source_arr = np.genfromtxt(file_name, delimiter=',', skip_header=1) |
#最尤推定値の計算 |
#準備 |
def vario(a): |
b = squareform(pdist(a[:, 0:2], 'euclidean')) |
return b |
l_vario = vario(source_arr) |
#モデル近似後のバリオグラムの行列 |
a = np.exp(l_vario/param[3]*(-1)) |
h_vario = param[4]*(1-a) |
#行列に1と0を追加 |
c = np.append(h_vario, [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]], axis=0) |
d = np.append(c, [[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[0]], axis=1) |
#逆行列を求める |
e = np.linalg.inv(d) |
#求める推定値の座標 |
x = np.arange(-7130, -6680, 3.75) |
x1 = x[:, np.newaxis] |
y = np.arange(-262730, -261530, 10) |
y1 = y[:, np.newaxis] |
x1y1 = np.hstack([x1,y1]) |
for num in range (0,120) : |
xy0 = x1y1[num, ] |
xy1 = np.tile(xy0, (21,1)) |
xydata1 = np.loadtxt("3301deta.csv", delimiter=",", skiprows=1,) |
xydata=np.delete(xydata1, [2], axis=1) |
xy = xy1-xydata |
#距離 |
xys1 = np.delete(xy,[1],axis=1) |
xys2 = np.delete(xy,[0],axis=1) |
xys3 = np.power(xys1, 2) |
xys4 = np.power(xys2, 2) |
xys5 = xys3 + xys4 |
xys6 = np.sqrt(xys5) |
#バリオグラム近似 |
xyv1 = np.exp(xys6/param[3]*(-1)) |
xyv2 = param[4]*(1-xyv1) |
xyv3 = np.append(xyv2, [[1]], axis=0) |
#逆行列との積 |
f = np.dot(e,xyv3) |
h = f[:bn,] |
#推定値算出 |
i = np.delete(xydata1, [0,1], axis=1) |
j = i * h |
est = np.sum(j) |
#推定誤差標準偏差 |
k = h * xyv2 |
sig2 = np.sum(k) |
sig = np.sqrt(sig2) |
sigp = est + sig |
sigm = est - sig |
res = np.array([est, sigp, sigm]) |
np.savetxt("extract.csv", res, delimiter=",") |
``` |
sh.kyoto-u score 13
2018/11/13 11:03 投稿
python(numpy)でloopを使った全計算結果をcsvファイルに保存する方法 |
### 前提・実現したいこと |
大学で研究の過程でクリギングという地球統計学の分析手法のプログラムを作成しています。 |
pythonを始めて1週間の未熟者ですが、どうかお力をお貸しください。 |
3301deta.csvというファイルには21行3列のx,y,z値が入っています。 |
loopを使っているせいか、csvファイルに計算結果を抽出すると最終行のみ表示されます。 |
どのようにプログラムを変更すれば計算結果すべてがcsvファイルに表示できるようになるでしょうか。 |
よろしくお願いいたします。 |
### 該当のソースコード |
```python |
# 標元データのファイル名を指定する |
file_name = '3301deta.csv' |
#ボーリングの本数 |
bn = 21 |
# 元データを読み込み、配列に格納する |
source_arr = np.genfromtxt(file_name, delimiter=',', skip_header=1) |
#最尤推定値の計算 |
#準備 |
def vario(a): |
b = squareform(pdist(a[:, 0:2], 'euclidean')) |
return b |
l_vario = vario(source_arr) |
#モデル近似後のバリオグラムの行列 |
a = np.exp(l_vario/param[3]*(-1)) |
h_vario = param[4]*(1-a) |
#行列に1と0を追加 |
c = np.append(h_vario, [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]], axis=0) |
d = np.append(c, [[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[1],[0]], axis=1) |
#逆行列を求める |
e = np.linalg.inv(d) |
#求める推定値の座標 |
x = np.arange(-7130, -6680, 3.75) |
x1 = x[:, np.newaxis] |
y = np.arange(-262730, -261530, 10) |
y1 = y[:, np.newaxis] |
x1y1 = np.hstack([x1,y1]) |
for num in range (0,120) : |
xy0 = x1y1[num, ] |
xy1 = np.tile(xy0, (21,1)) |
xydata1 = np.loadtxt("3301deta.csv", delimiter=",", skiprows=1,) |
xydata=np.delete(xydata1, [2], axis=1) |
xy = xy1-xydata |
#距離 |
xys1 = np.delete(xy,[1],axis=1) |
xys2 = np.delete(xy,[0],axis=1) |
xys3 = np.power(xys1, 2) |
xys4 = np.power(xys2, 2) |
xys5 = xys3 + xys4 |
xys6 = np.sqrt(xys5) |
#バリオグラム近似 |
xyv1 = np.exp(xys6/param[3]*(-1)) |
xyv2 = param[4]*(1-xyv1) |
xyv3 = np.append(xyv2, [[1]], axis=0) |
#逆行列との積 |
f = np.dot(e,xyv3) |
h = f[:bn,] |
#推定値算出 |
i = np.delete(xydata1, [0,1], axis=1) |
j = i * h |
est = np.sum(j) |
#推定誤差標準偏差 |
k = h * xyv2 |
sig2 = np.sum(k) |
sig = np.sqrt(sig2) |
sigp = est + sig |
sigm = est - sig |
res = np.array([est, sigp, sigm]) |
print(res) |
np.savetxt("extract.csv", res, delimiter=",") |
``` |
### 試したこと |
ここに問題に対して試したことを記載してください。 |
### 補足情報(FW/ツールのバージョンなど) |
ここにより詳細な情報を記載してください。 |