1

私はスパイダーを使用しており、次のクラスを作成しました。

class Ray:

    def __init__(self, r, p, k):

        if r.shape == (3,):
            self.r = r
        if p.shape == (3,):
            self.p = p
        if k.shape == (3,):
            self.k = k

r = array(range(3))
p = array(range(3))
k = array(range(3))

/home/user/workspace/spyder/project に保存され、コンソールの作業ディレクトリはそのディレクトリです。コンソールで array(range(3)) を実行すると、値が 0、1、2 の配列が返されます。ただし、行うときは

import ray

次のエラーが表示されます

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "ray.py", line 8, in <module>
    class Ray:
  File "ray.py", line 20, in ray
    r = array(range(3));
NameError: name 'array' is not defined

編集:

デフォルトでは、spyder は次の動作をします。array() がデフォルトで機能する理由がよくわかりません。これは numpy の一部に過ぎないと思いました。

import numpy as np  # NumPy (multidimensional arrays, linear algebra, ...)
import scipy as sp  # SciPy (signal and image processing library)

import matplotlib as mpl         # Matplotlib (2D/3D plotting library)
import matplotlib.pyplot as plt  # Matplotlib's pyplot: MATLAB-like syntax
from mayavi import mlab          # 3D plotting functions
from pylab import *              # Matplotlib's pylab interface
ion()                            # Turned on Matplotlib's interactive mode

Within Spyder, this intepreter also provides:
    * special commands (e.g. %ls, %pwd, %clear)
    * system commands, i.e. all commands starting with '!' are subprocessed
      (e.g. !dir on Windows or !ls on Linux, and so on)
4

1 に答える 1

13

が必要from numpy import arrayです。

これは、Spyder コンソールによって行われます。ただし、プログラムでは、必要なインポートを行う必要があります。たとえば、Spyder を持っていない人でもプログラムを実行できるという利点があります。

Spyder がデフォルトで何をインポートするかはわかりません。を介して、または同等に を介してarrayインポートされる可能性があります。コードを Spyder コンソールからプログラムに直接コピーする場合は、または. ただし、これはプログラムの名前空間を汚染するため、プログラムでこれを行うことは公式には推奨されていません。してから慣習です。from pylab import *from numpy import *from numpy import *from pylab import *import numpy as npnp.array(…)

于 2013-03-23T10:58:03.943 に答える