小编Mat*_*ieu的帖子

'for'循环和地图之间的区别

从标题来看,是的,有区别.现在适用于我的场景:让我们考虑一个类Dummy:

class Dummy:
    def __init__(self):
        self.attached = []

    def attach_item(self, item):
        self.attached.append(item)
Run Code Online (Sandbox Code Playgroud)

如果我用这个:

D = Dummy()
items = [1, 2, 3, 4]
for item in items:
    D.attach_item(item)
Run Code Online (Sandbox Code Playgroud)

我确实得到了D.attached = [1, 2, 3, 4].但是如果我将函数映射attach_itemitems,则D.attached保持为空.

map(D.attach_item, items)
Run Code Online (Sandbox Code Playgroud)

它在做什么?

python function python-3.x

43
推荐指数
3
解决办法
3961
查看次数

用y轴绘制直方图作为百分比(使用FuncFormatter?)

我有一个数据列表,其中数字在1000到20000之间.

data = [1000, 1000, 5000, 3000, 4000, 16000, 2000]
Run Code Online (Sandbox Code Playgroud)

当我使用hist()函数绘制直方图时,y轴表示bin中值的出现次数.而不是出现次数,我想有出现的百分比.

上面数据列表的直方图

上述情节代码:

f, ax = plt.subplots(1, 1, figsize=(10,5))
ax.hist(data, bins = len(list(set(data))))
Run Code Online (Sandbox Code Playgroud)

我一直在看这篇文章,它描述了一个使用的例子,FuncFormatter但我无法弄清楚如何使它适应我的问题.欢迎一些帮助和指导:)

编辑:主要问题与使用的to_percent(y, position)功能FuncFormatter.y对应于y轴上的一个给定值我猜.我需要将这个值除以我显然无法传递给函数的元素总数...

编辑2:由于使用了全局变量,我不喜欢当前的解决方案:

def to_percent(y, position):
    # Ignore the passed in position. This has the effect of scaling the default
    # tick locations.
    global n

    s = str(round(100 * y / n, 3))
    print (y)

    # The percent symbol needs escaping in latex
    if matplotlib.rcParams['text.usetex'] …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

14
推荐指数
4
解决办法
2万
查看次数

如何生成列表中哪些元素与所需列表保持固定距离

我有一个可能性列表和所需的输入:

possibles = [20, 30, 40, 50, 60, 70, 80, 100]
desired = [20, 30, 40]
Run Code Online (Sandbox Code Playgroud)

我想通过列表生成close.例:

# Distance of 1 (i.e. 1 element changes to a close-by)
[30, 30, 40]
[20, 40, 40]
[20, 30, 30]
[20, 30, 50]

# Distance of 2:
[40, 30, 40]
[30, 30, 50]
[30, 40, 40]
...
Run Code Online (Sandbox Code Playgroud)

我当前的版本一次只改变一个元素,因此,一旦距离超过1,我就会错过很多组合.

def generate_close_by(possibles, desired):
    for k in range(1, 4):
        for i, elt in enumerate(desired):
            id = possibles.index(elt)

            new = desired[:]
            if id < len(possibles)-k-1:
                new[i] = …
Run Code Online (Sandbox Code Playgroud)

python combinations iterable hamming-distance

7
推荐指数
1
解决办法
148
查看次数

根据里面的注释记录和详细描述单个脚本

我将编写一组脚本,每个脚本独立于其他脚本,但有一些相似之处。所有脚本的结构很可能都相同,可能看起来像:

# -*- coding: utf-8 -*-
"""
Small description and information
@author: Author
"""

# Imports
import numpy as np
import math
from scipy import signal
...

# Constant definition (always with variable in capital letters)
CONSTANT_1 = 5
CONSTANT_2 = 10

# Main class
class Test():
    def __init__(self, run_id, parameters):
        # Some stuff not too important
        
    def _run(self, parameters):
        # Main program returning a result object. 
Run Code Online (Sandbox Code Playgroud)

对于每个脚本,我想编写文档并将其导出为 PDF。我需要一个库/模块/解析器来读取脚本、提取注释、代码并将其重新组合成所需的输出格式。

例如,在_run()方法中,注释中可能有几个详细的步骤:

def _run(self, parameters):
        # Step 1: we start …
Run Code Online (Sandbox Code Playgroud)

python documentation

6
推荐指数
1
解决办法
388
查看次数

从 FFT 中找出信号的周期

我有一个周期信号,我想找到周期。 原始信号

由于有边界效应,我先剪掉边界,看第一个和最后一个最小值,保留N个周期。

信号

然后,我计算 FFT。

代码:

import numpy as np

from matplotlib import pyplot as plt

# The list of a periodic something
L = [2.762, 2.762, 1.508, 2.758, 2.765, 2.765, 2.761, 1.507, 2.757, 2.757, 2.764, 2.764, 1.512, 2.76, 2.766, 2.766, 2.763, 1.51, 2.759, 2.759, 2.765, 2.765, 1.514, 2.761, 2.758, 2.758, 2.764, 1.513, 2.76, 2.76, 2.757, 2.757, 1.508, 2.763, 2.759, 2.759, 2.766, 1.517, 4.012]
# Round because there is a slight variation around actually equals values: 2.762, 2.761 or 1.508, 1.507 …
Run Code Online (Sandbox Code Playgroud)

python signal-processing fft

5
推荐指数
2
解决办法
8052
查看次数

由于 PyQt5.QtWebKitWidgets 无法启动 spyder

我有 spyder 的问题。

我刚刚在这台笔记本电脑上安装了 Python 3.7 和 Spyder,就像我在许多其他笔记本电脑上所做的那样。然而这一次,它不起作用。

我是Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32用安装程序安装的。我将路径更改为自定义路径:C:\Python\Python37,我添加了预编译库并添加了环境的路径。笔记本电脑在那时重新启动。

然后我更新了pip:

py -3.7 -m pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

然后我安装了spyder:

py -3.7 -m pip install spyder
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用该文件启动 spyder:

C:\Python\Pythno37\Lib\site-packages\spyder\app\start.py
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ModuleNotFoundError: No module named 'PyQt5.QtWebKitWidgets'
Run Code Online (Sandbox Code Playgroud)

PyQt5 随版本 5.12 一起安装。

不知道为什么它不起作用......

编辑:完整的错误信息:

错误信息

它表明问题来自qtpy. 但是,相应的文件导入:

from . import PYQT5,PYSIDE2, PYQT4, PYSIDE, PythonQtError


# To test if we are using WebEngine or WebKit
WEBENGINE = True …
Run Code Online (Sandbox Code Playgroud)

python spyder pyqt5

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

在 2 个数组之间移动均方误差,“有效”,它们完全重叠

我有一个嘈杂的方形信号,看起来像这样:

方波信号

幅度是已知的。为了匹配完整的正方形,我可以创建正方形的图案并应用np.correlate以查找信号和图案最大重叠的位置。我想应用类似的方法来找到边缘,尝试与以下 2 种模式相关联:

图案

由于相关性只不过是卷积,因此这不起作用。一半的模式等于00无论信号上的位置如何,这一半的卷积都会返回;而另一半-XX振幅相等。当信号幅度最大时,与信号卷积的后半部分将是最大的。在信号图上,您可以观察到正方形并不完美,开头的幅度稍大。基本上,两种相关性都会导致正方形开始处的匹配,其中卷积最大。未检测到斜坡上升(方格末端)。

为了避免这个问题,我想使用不同的操作。因为我知道方波信号的幅度,所以我可以生成具有正确幅度的模式,在这种情况下约为-0.3。因此,我想采用该模式并将其滑过信号。在每一步,我都会计算均方误差,我的模式将与均方误差最小化位置处的信号匹配。此外,我想使用与卷积“有效”相同类型的设置,其中仅当 2 个数组完全重叠时才执行操作。

你知道另一种方法吗?和/或我应该使用哪个功能、方法?我找不到多合一的功能行np.convolvenp.correlate.

编辑:由于我在库中找不到预编码的函数,所以我用 while 循环对我的函数进行了编码。这是非常低效的......它是由这里的代码审查升级。

python numpy convolution correlation

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

控制 sphinx 生成的 .rst 文件的保存位置

假设 sphinx 的文档结构如下:

doc
 |_ _static
 |_ _templates
 |_ api
     |_ index.rst
     |_ classes.rst
     |_ functions.rst
 |_ index.rst
 |_ more_functions.rst
 |_ conf.py
Run Code Online (Sandbox Code Playgroud)

并且classes.rstfunctions.rst并且more_functions.rst具有可以使用 来自动记录的类和函数autodoc/autosummary。构建将为.rst这些类和函数生成文件:

  • doc/generated为了more_functions.rst
  • doc/api/generated对于classes.rstfunctions.rst

有没有办法控制这些generated文件夹的创建位置?


我试图generated最终获得一个独特的文件夹。在这种情况下,采用以下结构:

doc
 |_ generated
     |_ generated-from-more-functions.rst
     |_ api
         |_ generated-from-api/classes.rst
         |_ generated-from-api/functions-rst
Run Code Online (Sandbox Code Playgroud)

python python-sphinx autodoc

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

读取pickle文件时的AttributeError

当我在spyder(python 3.6.5)上读取我的.pkl文件时出现以下错误:

IN: with open(file, "rb") as f:
       data = pickle.load(f)  

Traceback (most recent call last):

 File "<ipython-input-5-d9796b902b88>", line 2, in <module>
   data = pickle.load(f)

AttributeError: Can't get attribute 'Signal' on <module '__main__' from 'C:\\Python36\\lib\\site-packages\\spyder\\utils\\ipython\\start_kernel.py'>
Run Code Online (Sandbox Code Playgroud)

上下文:

我的程序由一个文件组成:program.py 在程序中,Signal定义了一个类以及许多函数.下面提供了该计划的简要概述:

import numpy as np
import _pickle as pickle
import os

# The unique class
class Signal:
    def __init__(self, fq, t0, tf):
        self.fq = fq
        self.t0 = t0
        self.tf = tf
        self.timeline = np.round(np.arange(t0, tf, 1/fq*1000), 3)

# The functions …
Run Code Online (Sandbox Code Playgroud)

python pickle python-3.x spyder

4
推荐指数
2
解决办法
2255
查看次数

在 pyproject.toml 中连接 2 个数组

我正在尝试查看该pyproject.toml文件,但我陷入了这个简单的任务。考虑以下可选依赖项:

[project.optional-dependencies]
style = ["black", "codespell", "isort", "flake8"]
test = ["pytest", "pytest-cov"]
all = ["black", "codespell", "isort", "flake8", "pytest", "pytest-cov"]
Run Code Online (Sandbox Code Playgroud)

有没有办法避免复制/粘贴密钥中的所有可选依赖项allall = style + test至少有办法做到吗?

python python-3.x toml pyproject.toml

3
推荐指数
1
解决办法
949
查看次数