質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3598閲覧

np.r_を利用しての行列の出力

SUGATAKA

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/07/13 01:13

編集2017/07/13 01:15

###前提・実現したいこと
3次元の等高線データ(1,500,000点)を空間微分して出力したい

想定しているのは
Z軸に垂直になるように面を取得したいため、
3次元データをZ軸でソートした後、
座標値ごとに行列を作成
行列で差分計算を行った後
行列を結合させる np.r_を利用し、
いったん全データを行列にまとめ、
np.savetxt()でファイルに出力したいと考えています

###発生している問題・エラーメッセージ
エラーの内容を見ると np.r_ で行列の結合が出来ないようです
アドバイス、コメントなどをよろしくお願いします。

[エラーメッセージ]
Traceback (most recent call last):

File "<ipython-input-45-c7b2303f60bb>", line 1, in <module>
runfile('D:/20170621/vor/sort.py', wdir='D:/20170621/vor')

File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)

File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "D:/20170621/vor/sort.py", line 34, in <module>
dvorz = np.r_(dvorz,dvorz1)

TypeError: 'RClass' object is not callable

###該当のソースコード

import numpy as np a = 'He_re1000_vor-' f = 100 line = 0 for file in range(0,2): data = np.loadtxt(a+str(f),delimiter=',',skiprows=1) print('sort_z-'+str(f)) sortz = data[data[:,3].argsort()] '''最初の面を前進差分''' surface1 = sortz[line:line+25000,4:7] surface2 = sortz[line+25000:line+50000,4:7] dz = sortz[line+5000,3]-sortz[line+25000,3] dvorz = (surface2-surface1)/(dz) print(dvorz) '''以降の面を中心差分''' for line in range(58): surface1 = sortz[line:line+25000,3:7] surface2 = sortz[line+50000:line+75000,3:7] dz1 = sortz[line+75000,3]-sortz[line+50000,3] dz2 = sortz[line+25000,3]-sortz[line,3] dz = dz1+dz2 dvorz1 = (surface2-surface1)/(dz) dvorz = np.r_(dvorz,dvorz1) line += 25000 print(dvorz) '''最後の面を後進差分''' data1 = sortz[line:line+25000,3:7] data2 = sortz[line+25000:line+50000,3:7] dz = sortz[line+25000,3]-sortz[line,3] dvorz1 = (data2-data1)/(dz) dvorz = np.r_(dvorz,dvorz1) print(dvorz) np.savetxt('He_re1000_dvor-'+str(f),dvorz,delimiter=',',header="dvorx,dvory,dvorz") f += 100

###試したこと

最初はノード1つごとに計算するやり方を想定していましたが、
手間と時間を考えて、面ごとに計算するように工夫してみました

###補足情報(言語/FW/ツール等のバージョンなど)
環境 Python3.5 Spyder

操作したいファイル名
He_re1000_vor-0100
He_re1000_vor-0200
He_re1000_vor-0300
・・・
He_re1000_vor-10900

※それぞれのファイル内には
点番号,座標データx,y,z,数値データ①,②,③
というデータが1,500,000行入っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

np.r_は( )出なく、[ ]を使うのでは?

Pytho

1dvorz = np.r_[dvorz,dvorz1] 2

投稿2017/07/13 01:43

xxBadMoon2017

総合スコア114

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SUGATAKA

2017/07/13 01:56

すみません。そうでした。お恥ずかしい・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問