質問編集履歴

4 誤字

sh.kyoto-u

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=",")
```
  • Python

    28750 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • NumPy

    1541 questions

    NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

3 誤字

sh.kyoto-u

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=",")
```
  • Python

    28750 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • NumPy

    1541 questions

    NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

2 文法に修正

sh.kyoto-u

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])
   print(res)  
np.savetxt("extract.csv", res, delimiter=",")
```
  • Python

    28750 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • NumPy

    1541 questions

    NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

1 書式の改善

sh.kyoto-u

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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
  • Python

    28750 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • NumPy

    1541 questions

    NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る