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

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

新規登録して質問してみよう
ただいま回答率
87.20%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

解決済

numbaによるnumpy利用アフィン変換の高速化

Silky
Silky

総合スコア0

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1回答

0評価

0クリップ

4243閲覧

投稿2019/08/30 22:21

前提・実現したいこと

このpython3のプログラムをnumbaで高速化するにはどうしたら良いでしょうか。
配列内にcsvファイルから取り込んだ3次元点軍の座標データを入れ、3次元のアフィン変換で座標変換をするプログラムです。

### 該当のソースコード python3 import numpy as np import pandas import pickle import redis import numba import time # 時間計測用メソッド def calctime(func): start = time() r = func() return {'value': r, 'time': time()-start} #以下,希望するアフィン変換の関数 def zrot (yaw,x,y,z): return np.array([ [1,0,0,x], [0,np.cos(yaw),-np.sin(yaw),y], [0,np.sin(yaw),np.cos(yaw),z], [0,0,0,1]]) def yrot (roll): return np.array([[np.cos(roll),0,np.sin(roll),0], [0,1,0,0], [-np.sin(roll),0,np.cos(roll),0], [0,0,0,1]]) def xrot (pitch): return np.array([[np.cos(pitch),-np.sin(pitch),0,0], [np.sin(pitch),np.cos(pitch),0,0], [0,0,1,0 ], [0,0,0,1]]) def main(): # csvの読み込み csv = pandas.read_csv('10[m]MergedFilecarXYZonly.csv',header=None) # バージョン2のプロトコルを利用してバイト列をダンプ dumped = pickle.dumps(csv, protocol=2) # ダンプしたバイト列をredisに保存 r = redis.Redis(host='localhost', port=6379, db=0) r.set('10[m]MergedFilecarXYZonly.csv', dumped) A = pickle.loads(r.get('10[m]MergedFilecarXYZonly.csv')) return A #npdataの形を、pandaで読み込んだデータフレームの形に変形する #@numba.jit def doit(A): npdata=np.array(A.values.flatten()) print(npdata) print("\nok") XYZarray = np.reshape(npdata,(-1,3)) yaw_tgt = 0*(np.pi/180) X_tgt = 0 Y_tgt = 0 Z_tgt = 0 roll_tgt =0 pitch_tgt = 0 yaw_car = 0*(np.pi/180) X_car = 0 Y_car = 0 Z_car = 0 roll_car = 0 pitch_car = 0 #affin = np.empty(4,4,dtype=np.float64) #A = np.empty(4,4,dtype=np.float64) #B = np.empty(4,4,dtype=np.float64) #C = np.empty(4,4,dtype=np.float64) A = np.dot(zrot(yaw_tgt,X_tgt,Y_tgt,Z_tgt) ,yrot(roll_tgt)) B = np.dot(xrot(pitch_tgt), zrot((-1)*yaw_car,(-1)*X_car,(-1)*Y_car,Z_car)) C = np.dot(yrot((-1)*roll_car),xrot((-1)*pitch_car)) affin = np.dot(A,B) affin = np.dot(affin,C) #座標変換用のアフィン変換行列affinをデータの転地行列にかける XYZarray2 = np.empty(np.shape(XYZarray.T)) Dot_af = np.vstack( (XYZarray.T,np.ones(np.shape(XYZarray.T[0,:])))) XYZarray_af = np.dot(affin , Dot_af) XYZarray2 = XYZarray_af[0:3,:].T #print(XYZarray) print("2tつめ") print(XYZarray2) print("おk") start = time.time() B = main() doit(B) print("original took %f s" %(time.time() - start))
### 試したこと def doit()の上に@numba.jit を書いてみましたが以下のメッセージが出て低速化します(書く前:0.013074 s→書いた後:0.815948 s) zenbuyasoudan.py:67: NumbaWarning: Compilation is falling back to object mode WITH looplifting enabled because Function "doit" failed type inference due to: Untyped global name 'zrot': cannot determine Numba type of <class 'function'> File "zenbuyasoudan.py", line 92: def doit(A): <source elided> A = np.dot(zrot(yaw_tgt,X_tgt,Y_tgt,Z_tgt) ,yrot(roll_tgt)) ^ @numba.jit /home/hiroki/anaconda3/lib/python3.7/site-packages/numba/compiler.py:725: NumbaWarning: Function "doit" was compiled in object mode without forceobj=True. File "zenbuyasoudan.py", line 68: @numba.jit def doit(A): ^ self.func_ir.loc)) /home/hiroki/anaconda3/lib/python3.7/site-packages/numba/compiler.py:734: NumbaDeprecationWarning: Fall-back from the nopython compilation path to the object mode compilation path has been detected, this is deprecated behaviour. For more information visit http://numba.pydata.org/numba-doc/latest/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit File "zenbuyasoudan.py", line 68: @numba.jit def doit(A): ^ warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc)) ### 補足情報(FW/ツールのバージョンなど) 環境はubuntu18.04でvsdodeとanacondaを用いています どうかよろしくお願い申し上げます

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yoshinavi
yoshinavi

2019/08/31 01:11

私の環境では提示のコードどおりの動作です。 OS:win10 ブラウザ:Chrome バージョン: 76.0.3809.132(Official Build) (64 ビット)
yoshinavi
yoshinavi

2019/08/31 01:14

適用CSSの確認や、キャッシュクリアはお済ですか?
querykuma
querykuma

2019/08/31 01:35

私の環境でも問題ありません。 環境、OS、ツールのバージョンなどを書いておいてください。
Silky
Silky

2019/08/31 03:10

下記の状況ですが、いまだに問題は解決できておりません。。。 OS:win10 ブラウザ:Chrome バージョン: 76.0.3809.132(Official Build) (64 ビット) キャッシュクリア済み(その他のツール>閲覧履歴を消去>「キャッシュされた画像とファイル」を削除)
Silky
Silky

2019/08/31 03:27 編集

原因が判明しました! なんだか知らないうちにホイールでブラウザの表示を拡大していたようです。 そのせいでブレークポイントが変わってしまっていたようです^^; ホイールをくるくる回して画面表示を拡大することがよくあるので、特にデベロッパーツールを使用するときには拡大、縮小されていないか今後は気を付けようと思います。 お騒がせしましたm(__)m ありがとうございました!!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。