作为一个学习练习,我正在尝试实现一个类,它将模拟python的complex内置行为,但具有不同的行为__str__和__repr__方法:我希望它们以格式打印...
(1.0,2.0)
Run Code Online (Sandbox Code Playgroud)
...代替:
(1+2j)
Run Code Online (Sandbox Code Playgroud)
我第一次尝试只是从继承complex和重新定义__str__和__repr__,但存在的问题是,当非覆盖的方法被调用,一个标准的complex返回,并以标准格式打印:
>>> a = ComplexWrapper(1.0,1.0)
>>> a
(1.0,1.0)
>>> b = ComplexWrapper(2.0,3.0)
>>> b
(2.0,3.0)
>>> a + b
(3+4j)
Run Code Online (Sandbox Code Playgroud)
当所需的输出是(3.0,4.0).
我正在阅读有关元类的内容,并认为它们可以解决我的问题.从Python Class Decorator中的答案开始,我当前的实现如下:
def complex_str(z):
return '(' + str(z.real) + ',' + str(z.imag) + ')'
def complex_repr(z):
return '(' + repr(z.real) + ',' + repr(z.imag) + ')'
class CmplxMeta(type):
def __new__(cls, name, bases, attrs):
attrs['__str__'] = complex_str …Run Code Online (Sandbox Code Playgroud) 我正试图获得嘈杂频谱的峰值,看起来像scipy.signal.find_peaks_cwt(在scipy.org上记录)是一个很好的解决方案.
但是,即使更新scipy后,python(和ipython)也无法找到该函数:
>>> from scipy.signal import find_peaks_cwt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name find_peaks_cwt
Run Code Online (Sandbox Code Playgroud)
我输错了吗?还是未发布的版本?我在python 2.7上使用scipy 0.10.1
我有一个包含多个区域的 2D 表面,我想将其绘制为不同的颜色,每种颜色代表一个给定的区域。
我遇到的问题是我的颜色条没有均匀地间隔不同的颜色(使用 5 个区域时),或显示正确数量的区域(使用 9 个区域时)。
我的代码基于这个例子:
import matplotlib as mpl
import matplotlib.pyplot as plt
cmap = ListedColormap([str(x) for x in np.linspace(0.0, 1.0, 5)])
# If a ListedColormap is used, the length of the bounds array must be
# one greater than the length of the color list. The bounds must be
# monotonically increasing.
bounds = np.linspace(0.0, 1.0, 6)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
plt.contourf(np.array([[1.0, 1.5, 2.0, 2.5, 3.0], [3.5, 4.0, 4.5, 5.0, 5.0]]), cmap=cmap)
cb2 …Run Code Online (Sandbox Code Playgroud)