小编msz*_*zep的帖子

使用元类来覆盖复杂内置的方法

作为一个学习练习,我正在尝试实现一个类,它将模拟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)

python metaprogramming metaclass complex-numbers

9
推荐指数
1
解决办法
1750
查看次数

使用scipy.signal.find_peaks_cwt

我正试图获得嘈杂频谱的峰值,看起来像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

python ipython scipy

5
推荐指数
1
解决办法
2111
查看次数

如何在 matplotlib 轮廓和颜色条中显示给定数量的颜色

我有一个包含多个区域的 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)

python matplotlib

0
推荐指数
1
解决办法
916
查看次数