我正在使用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)
答案 0 :(得分:7)
您需要from numpy import array
。
这是由Spyder控制台为您完成的。但是在一个程序中,你必须做必要的进口;例如,优点是您的程序可以由没有Spyder的人运行。
我不确定Spyder默认为您导入的内容。可以通过array
或通过from pylab import *
等效导入from numpy import *
。如果您想直接将代码从Spyder控制台复制到程序,则可能需要from numpy import *
甚至from pylab import *
。但是,它是officially not recommended to do this in a program,因为这污染了程序的命名空间;做import numpy as np
然后np.array(…)
是习惯做法。