相关疑难解决方法(0)

itertools.cycle()旁边.()?

好吧,我使用itertools.cycle().next()Python 2.6.6的方法,但现在我更新到3.2我注意到itertools.cycle()对象没有方法next().

我用它在类的spin()方法中循环一个字符串Spinner.因此,如果我们循环元组('|', '/', '-', '\\', '|', '/', '-'),它会打印:|,/,-,\,|,/,-,|,/等...

我搜索了Python 3.0,3.1和3.2的发行说明,并没有发现任何变化.什么时候改变了?是否有任何简单的替代方案可以实现与以前相同的功能?

先感谢您.

cycle next python-itertools python-3.x

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

为什么zip()会丢弃我的生成器的值?

当我注意到我的简单实现没有产生正确的结果时,我正在写这个问题的答案.在追捕这个bug时,我注意到以下内容:

In [1]: import itertools
In [2]: gen = itertools.cycle((0,1,2))

In [3]: zip(gen, range(3))
Out[3]: [(0, 0), (1, 1), (2, 2)]

In [4]: zip(gen, range(3))
Out[4]: [(1, 0), (2, 1), (0, 2)]
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,gennext()方法被称为一个additioinal时间.为了说明这一点,我使用了以下内容:

class loudCycle(itertools.cycle):
    def next(self):
        n = super(loudCycle, self).next()
        print n
        return n

In [6]: gen = loudCycle((0,1,2))
In [7]: zip(gen, range(3))
0
1
2
0
Out[7]: [(0, 0), (1, 1), (2, 2)]
Run Code Online (Sandbox Code Playgroud)

python

10
推荐指数
2
解决办法
1048
查看次数

如何找到信号周期(自相关 vs 快速傅立叶变换 vs 功率谱密度)?

假设有人想找出给定正弦波信号的周期。从我在网上阅读的内容来看,这两种主要方法似乎采用了傅立叶分析或自相关。我正在尝试使用 python 自动化该过程,我的用例是将此概念应用于来自围绕恒星运行的模拟物体的位置(或速度或加速度)时间序列的类似信号。

为了简单的例子,考虑x = sin(t)for 0 ? t ? 10 pi

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

## sample data
t = np.linspace(0, 10 * np.pi, 100)
x = np.sin(t)
fig, ax = plt.subplots()
ax.plot(t, x, color='b', marker='o')
ax.grid(color='k', alpha=0.3, linestyle=':')
plt.show()
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)

示例正弦波

给定形式x = a sin(b(t+c)) + d为 的正弦波,正弦波的周期为2 * pi / b。由于b=1(或通过目视检查),我们的正弦波的周期是2 * pi。我可以根据此基线检查从其他方法获得的结果。

尝试 1:自相关

据我了解(如果我错了,请纠正我),相关性可用于查看一个信号是否是另一个信号的时间滞后副本(类似于余弦和正弦因相位差而不同)。因此,自相关是针对自身测试信号,以测量时滞重复所述信号的时间。使用此处发布示例 …

python signals waveform fft time-series

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

在数字序列的末尾找到重复序列

我的问题是:我有一大堆数字.我知道,在某一点之后,它变成了周期性的 - 也就是说,在序列的开头有k个数字,然后还有更多的数字在序列的其余部分重复.作为一个更清楚的例子,序列可能如下所示:[1,2,5,3,4,2,1,1,3,2,1,1,3,2,1,1,3 ,...],其中k是5,m是4,然后重复块是[2,1,1,3].从这个例子可以清楚地看出,我可以在较大的块内部重复位,因此只查找重复的第一个实例是没有用的.

但是,我不知道k或m是什么 - 我的目标是将序列[a_1,a_2,...,a_n]作为输入并输出序列[a_1,...,a_k,[a_(k) +1),...,a_(k + m)]] - 基本上通过将其中的大部分列为重复块来截断较长的序列.

有没有一种有效的方法来解决这个问题?此外,计算可能更难但更理想 - 我可以在生成相关序列时执行此操作,这样我必须生成最小量?我在这个网站上看过其他类似的问题,但它们似乎都处理序列而没有开始的非重复位,并且通常不必担心内部重复.

如果它有用/有用,我也可以了解为什么我要看这个以及我将用它做什么.

谢谢!

编辑:首先,我应该提到我不知道输入序列是否恰好在重复块的结尾处结束.

我试图研究的现实世界问题是为二次非理性(实际上是负CFE)的连续分数扩展(CFE)写一个漂亮的,封闭形式的表达式.为这些CFE生成部分商*非常简单 - 但是,在某些时候,二次无理的CFE尾部变成了重复块.我需要在这个重复块中使用部分商.

我目前的想法是这样的:也许我可以调整一些建议的算法,从右边开始使用其中一个序列.或者,也许有证据表明为什么二次非理性是周期性的,这将有助于我理解为什么它们开始重复,这将帮助我提出一些简单的标准来检查.

*如果我将[a_0,a_1,...]作为连续分数展开,我将a_i称为部分商.

有兴趣的人可以在这里找到一些背景信息:http://en.wikipedia.org/wiki/Periodic_continued_fraction

language-agnostic arrays algorithm sequence repeat

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

TypeError:切片索引必须是整数或无或具有__index__方法

在IDLE中运行代码时出现以下错误:

Traceback (most recent call last):   File "C:/Python34/inversion3.py",
line 44, in <module>
    nInversions.inversionMergeSort(m)   File "C:/Python34/inversion3.py", line 16, in inversionMergeSort
     left = m[0:half] TypeError: slice indices must be integers or None or have an __index__ method
Run Code Online (Sandbox Code Playgroud)

码:-

from collections import deque

m = []
f = open("IntegerArray.txt")
for line in f:
    m.append(int(line))

class InversionCount:

    def __init__(self, n):
        self.n = n
    def inversionMergeSort(self, m):
        if len(m) <= 1:
            return m
        half = len(m)/2
        left = m[0:half]
        right = m[half:]
        left = self.inversionMergeSort(left) …
Run Code Online (Sandbox Code Playgroud)

typeerror inversion python-3.x

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