注意:我检查了重复项,但没有明确回答我的问题。如果我遗漏了什么,我相信你会告诉我的!
为了清理我的代码,我一直在寻找在我的程序中导入SciPy和NumPy的标准约定。我知道没有严格的指导方针,我可以按照我想要的方式来做,但有时我仍然会发现相互矛盾的指导。
例如,我在某处读到,NumPy仅用于实现数组对象,而SciPy用于所有其他科学算法。因此,NumPy应该用于数组操作,SciPy用于其他所有操作...另一方面,SciPy在其主名称空间中导入每个Numpy函数,因此scipy.array()与numpy.array() (see this question)是相同的,因此NumPy应该仅在不使用SciPy时使用,因为它们是重复的……
使用SciPy和NumPy的推荐方式是什么?作为一名科学家,sqrt(-1)应该返回一个复数,所以我倾向于只使用SciPy。
现在,我的代码开始于:
import numpy as np
from scipy import *
from matplotlib import pyplot as plt我使用scipy进行数学运算(比如log10()),使用numpy进行数组创建/操作(比如np.zeros())。是否可以一直使用SciPy,而从不显式导入NumPy?将来的更新会从SciPy中删除NumPy的数组操作吗?
发布于 2013-03-21 01:15:42
我推荐这样做:
import numpy as np
import scipy as sp而不是。做from ... import *总是很危险的,尤其是像numpy和scipy这样的大模块。下面说明了原因:
>>> any(['foo'])
True
>>> from scipy import *
>>> any(['foo'])
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
any(['foo'])
File "C:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 1575, in any
return _wrapit(a, 'any', axis, out)
File "C:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 37, in _wrapit
result = getattr(asarray(obj),method)(*args, **kwds)
TypeError: cannot perform reduce with flexible type这里发生了什么?标准的python内置函数any被替换为具有不同行为的scipy.any。这可能会破坏任何使用标准any的代码。
发布于 2013-06-18 09:26:36
这篇文章有一些关于这两个模块(Relationship between scipy and numpy)的很好的信息。看起来Numpy的功能应该完全包含在Scipy中,尽管有一些例外(参见文章)。我要说的是,简单地使用Scipy来满足您的所有需求是安全的,因为大多数重要的东西,如数学函数、数组和其他东西都包含在Scipy中。
发布于 2013-03-21 00:27:26
如何创建类,并使用您将需要的,fx: class 1:
import cv2
from SIGBWindows import SIGBWindows
from SIGBAssg import *第二类:
import cv2
import numpy as np
from pylab import *
from scipy.cluster.vq import *
from scipy.misc import imresize第三类:
import cv2
import numpy as np最后是我们调用对象的地方:
import cv2
from SIGBWindows import SIGBWindows
from SIGBAssg import *
windows = SIGBWindows(mode="video")
windows.openVideo("somevideo.avi")
kmeans(windows)我不知道这是否是你想要的,但是这种方法让代码变得非常整洁,并且很容易添加更多的功能。
https://stackoverflow.com/questions/15528981
复制相似问题