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

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

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

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

2回答

735閲覧

numpy.arrayを使ったクラスについて

okahijiki

総合スコア404

NumPy

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

0クリップ

投稿2019/07/06 00:05

numpy arrayをつかったクラスを書いてみました。
がしかし、うまく出力できません。
どうぞ、まちがいをご指摘くださいませ。

import numpy as np class Trial: def __init__(self,x,y): self.x=x self.y=y def array(self): a=np.array([self.x,self.y]) b=np.array([2,3]) return sum(a*b) res = Trial(2,3) res.array()

エラーメッセージは以下の通りです。

NameError Traceback (most recent call last)
<ipython-input-56-87196fe4e20c> in <module>
----> 1 res.array()

NameError: name 'res' is not defined

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

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

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

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

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

guest

回答2

0

「どのような環境で、どういう操作をしたか」を「具体的かつ正確に」書いた方がよいようです。

エラーメッセージからIPython上で実行しているのがわかるので、(おそらくはAnaconda環境で)Jupyter Notebookを用いて実行したのだと思いますが、セルには

res.array()

の1行しか書いてないと思います。なぜならエラーメッセージから

NameError Traceback (most recent call last) <ipython-input-56-87196fe4e20c> in <module> ----> 1 res.array() ^ これはセルに記述したコードのセル内の行番号 NameError: name 'res' is not defined

だからです。質問者さんはPythonの実行の仕方にまだ慣れていないと想像します。そのような状況では次のように詳しく実行手順を書いた方がよさそうだと思います。

質問の仕方の例

次のように実行したところ(4)に示すエラーメッセージが表示された。原因は何か?

(1) Jupyter Notebookをこれこれの手順で起動
(2) Notebook起動後、画面上の最初のセルに以下を入力し実行した

python

1import numpy as np 2 3class Trial: 4 def __init__(self,x,y): 5 self.x=x 6 self.y=y 7 8 def array(self): 9 a=np.array([self.x,self.y]) 10 b=np.array([2,3]) 11 return sum(a*b)

(3) 上記のセルを実行後次のセルに以下を入力し実行した

Python

1res.array()

(4)エラーメッセージが以下のように表示された

NameError Traceback (most recent call last)
<ipython-input-56-87196fe4e20c> in <module>
----> 1 res.array()
NameError: name 'res' is not defined

解答例: 変数resに何も代入していない時点でresを参照しようとしたのがNameErrorの原因。resへの代入をした後でなければresは参照できない。

投稿2019/07/06 01:28

KSwordOfHaste

総合スコア18392

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

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

okahijiki

2019/07/06 02:18

おっしゃるとおり、Anaconda/Jupyterでやっております。 クラス インスタンス res=Trial(2,3) メソッド res.array() のそれぞれをセルに書き、順番に実行してのエラーとなります。なぜ、そうなったのかは不明のままで、 あえてインスタンスを書かずに、メソッドを実行してみると、ご指摘の通りの、本件の質問に書いた通りのエラーが、たしかに、出ます〜。 teratailでの質問の記載のご指摘、ありがとうございまーす。参考にして、今後の質問に反映させていきたいと存じます。
KSwordOfHaste

2019/07/06 05:25

res=Trial(2,3) の実行の際に (A)なんらかのエラーが出た (B)これを実行した後にカーネルをリセットした (C)操作ミスのために実は上のセルが実行できていなかった のいずれかでないとNameErrorは起き得ないはずです。(B)(C)は操作に慣れてない時期には割とありそうに思います。JupyterやIPythonのバグの可能性もゼロではないかも知れませんが基本的には「ユーザーのミス」であることが殆どと考えるべきでしょう。
okahijiki

2019/07/06 07:12

けっこう直感で操作している感じがありまして。ぼくも(B)、(C)のような気がしています。コメント、ありがとうございまーす!
guest

0

ベストアンサー

お疲れ様です。

動かしてみましたが、エラーになりませんね。

22+33で13になりますね。

resがdefineされていないというのが、、??、、見たまんま、defineされてますからね。。。

投稿2019/07/06 01:05

0kcal

総合スコア275

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

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

okahijiki

2019/07/06 01:22

あたらしくjupyter notebookを立ち上げ、やってみたら、できました! ありがとうございまーす! 先の質問は、コードを書いていて、途中で、その動きを確認するため(クラスの動きを確認するため)試しに書いてみたものです。原因は不明でありまする。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問