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

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

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

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

Q&A

1回答

1514閲覧

numba を型指定してnopython=Trueで実行したい

logos

総合スコア7

Python

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

0グッド

0クリップ

投稿2021/09/25 11:59

編集2021/09/25 12:04

前提・実現したいこと

numbaをnopython=Trueで使用したいが、引数の指定の仕方がよくわからない。

試したこと

下記URLを参考に、書いてみたがTypeErrorが発生
https://yutori-datascience.hatenablog.com/entry/2014/12/10/123157

使用している言語・ブラウザ

windows 10
python3.7
anaconda

該当のソースコード

python

1from numba import jit 2 3 4List1 = [100,200,300,400,500] 5List2 = ["aaa","bbb","ccc",111,222,333] 6 7@jit('i1[:]','i1[:]',nopython=True) 8def Prediction(CountList1,CountList2): 9 for item1 in CountList1: 10 print(item1) 11 for item2 in CountList2: 12 print(item2) 13 14 return "終了" 15 16print(Prediction(List1,List2))

#エラーメッセージ

TypeError: invalid signature: 'i1[:]' (type: 'str') evaluates to 'Array' instead of tuple or Signature

回答いただけますと幸いです。
どうぞよろしくお願いいたします

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

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

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

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

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

bsdfan

2021/09/26 01:13

nopython=Trueを使用したいだけなら、signatureは必須ではないので、分からないなら指定しなくていいです。 初回の呼び出し時に型に合わせてコンパイルされます。 が、今回書かれているコードでは、numpyのarrayではなくリスト(しかも数値と文字列の混ざったもの)を使っていたり、jitの対象の関数がprintして文字列を返すという高速化できない関数だったりして、numbaを使う意味がないものになっているため、アドバイスも難しいです。 一番知りたいこと、やりたいことはなんでしょうか?
logos

2021/09/26 01:32

回答ありがとうございます。 numbaの対象が、numpyのarrayのみであることを理解できていませんでした。 jitを用いてpythonを高速化したかったのですが、numbaの機能の対象外であるということですね。
logos

2021/09/26 04:47

ありがとうございます、参考します!
guest

回答1

0

@jit('i1[:]','i1[:]',nopython=True)

の意味は

Predictionの第一引数は1バイト整数の配列です、Predictionの第二引数は1バイト整数の配列です、
型がわからない場合は、うまく判断して引き数の型をきめてください。

という意味です。

引数の型はすべて指定しているので、nopython=Trueは意味がありません。

それを信じてnumbaは第一引数は1バイト整数の配列です、Predictionの第二引数は1バイト整数の配列ですというコードを出そうとします。

その第二引数に["aaa","bbb","ccc",111,222,333]を渡したら、「話が違うじゃん、エラーだ」となうrのは当然でしょう。

投稿2021/09/25 12:39

ppaul

総合スコア24670

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

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

logos

2021/09/25 12:45

では、このList1とList2に適切な引数の型はどうなるでしょうか。
jbpb0

2021/09/26 04:53

ppaulさん > 引数の型はすべて指定しているので、nopython=Trueは意味がありません。 「nopython=True」は、コードをnumbaがコンパイルできない場合にPython interpreterで実行するのを禁止するという意味で、引数の型指定をするかどうかとは関係無いと思うのですが https://numba.pydata.org/numba-doc/latest/user/5minguide.html#what-is-nopython-mode たとえば、 https://numba.pydata.org/numba-doc/latest/user/jit.html#basic-usage の最初のコードは、引数の型指定と「nopython=True」のどちらもありませんが、nambaは引数の型を推定して関数をコンパイルしますよね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問