1

我正在使用 spyder 并编写了以下类:

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 中,控制台工作目录就是那个目录。在控制台中,我可以运行一个数组(范围(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可能通过from pylab import *或等效地通过from numpy import *. 如果您想直接将代码从 Spyder 控制台复制到程序中,您可能需要from numpy import *甚至from pylab import *. 不过,官方不建议在程序中这样做,因为这会污染程序的命名空间;做import numpy as np然后np.array(…)是习惯。

于 2013-03-23T10:58:03.943 回答