小编The*_*ark的帖子

追加到Pandas中的DataFrame作为新列

我有两个具有相同索引的DataFrame,并希望将第二个追加到第一个。可以说我有:

df1 = pd.DataFrame([1,2,3], index = [2,3,4])
df2 = pd.DataFrame([3,5,3], index = [2,3,4])
df1 = df1.append(df2)
Run Code Online (Sandbox Code Playgroud)

哪个返回

   0
2  1
3  2
4  3
2  3
3  5
4  3
Run Code Online (Sandbox Code Playgroud)

但是我希望它在索引匹配的地方添加一个新列:

2  1  3
3  2  5
4  3  3
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

python pandas

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

如何替换列表中除最后一项之外的所有项目

我有一些列表,如[1,3,5,2], [2,3], [5,3,2,5]等等.我想这样做,所以他们被修改为隐藏除了最后一个之外的每个数字,例如[x,x,x,2],[x,3],[x,x,x,5].我尝试过类似的东西:

lists = [[1,3,5,2],[2,3],[5,3,2,5]]
for list in lists:
    new_list = [ i = 'x' for i in list[:-1]]
Run Code Online (Sandbox Code Playgroud)

python list

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

理解python中的FFT输出

我试图了解 scipy.fftpack.fft 的输出。我创建了一个信号并做了一个fft。这是fft的代码:

import numpy as np
from scipy.fftpack import fft
import matplotlib.pyplot as plt

# Number of samplepoints
N = 600
# sample spacing
T = 1.0 / 800.0
x = np.linspace(0.0, N*T, N)
y = 5.0 * np.sin(50.0 * 2.0*np.pi*x) + 1.0*np.sin(80.0 * 2.0*np.pi*x) #unit is V
yf = fft(y)
xf = np.linspace(0.0, 1.0/(2.0*T), N/2)

plt.close()
plt.plot(xf, 2.0/N * np.abs(yf[0:N/2]))
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

这创造了这个:

快出

我知道信号强度幅度的单位与它从(V)创建的波形上的信号单位相同。我不明白 fft 频率的幅度与原始信号幅度之间的关系。比如50Hz正弦部分的幅度是5.0V,那为什么fft上50Hz的幅度在3.6V左右呢?

python fft

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

Haskell列表已冻结

我是Haskell的新手,并试图了解一些事情.如果我执行以下操作,我会收到一个问题:

list1 = [1..]
list2 = [x | x <- list1, x <= 4]
print list2
Run Code Online (Sandbox Code Playgroud)

返回[1,2,3,4.它上面没有末端括号,因此就好像列表正在加载或冻结.以下是它的外观:

Prelude> print list2
[1,2,3,4
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

haskell

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

takeWhile测试嵌套列表的长度

我是Haskell的新手,并尝试执行以下操作:

takeWhile (length < 3) [[1],[1,2],[1..3],[1..4]].但这给出了一个错误,我认为是因为takeWhile会测试length < 3 [1]而不是length [1] < 3,这是可行的.我是否要制作[[1],[1,2],[1..3],[1..4]]长度列表然后为长度列表做一个takeWhile (< 3)?或者有没有办法通过直接测试长度来做到这一点?

haskell list stream pointfree tacit-programming

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

零填充数据,直到其长度等于2的幂

我正在尝试编写一个可以对某些数据进行零填充的函数,直到其长度等于2的最接近的较高幂.我还希望能够对此进行一定数量的迭代.现在这是我的功能:

def pad_to_next_2n(array, iterations = 1):
    n = 1
    while n <= iterations:
        l = len(array)
        padding = l +1 #incase array is already length equal to 2^n
        while np.log2(padding) % 1 != 0:
            padding += 1
        if l % 2 == 0:
            total_padding = padding - l
            array =  np.pad(array, (total_padding/2,), 'constant')
            n += 1
        else:
            total_padding = padding - l
            left_padding = (total_padding - 1)/2
            right_padding = total_padding - left_padding
            print total_padding
            print left_padding
            print right_padding
            array = …
Run Code Online (Sandbox Code Playgroud)

python performance function

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

迭代无限发生器直到满足条件

我在python中理解生成器时遇到了一些麻烦.假设我有以下简单的生成器:

def test_gen():
    yield 1
    yield 2
    yield 5
    yield 8
    yield 12
Run Code Online (Sandbox Code Playgroud)

这只会产生一些数字.让我们说我想继续从发生器打印值,直到值超过10.我的第一次尝试就是

gen = test_gen()
for i in gen:
    while i > 10:
        print(i)
Run Code Online (Sandbox Code Playgroud)

但这只是打印1永久.我找到了

gen = test_gen()
for i in gen:
    if i > 10:
        print(i)
Run Code Online (Sandbox Code Playgroud)

按预期工作,因为它只是迭代生成器中的每个值,直到StopIteration被引发.然后我遇到了一个无限生成器的问题,例如这个生成素数的生成器:

def prime_gen():
    D = dict()
    n = 2
    while True:
        if n not in D:
            yield n
            D[n*n] = [n]
        else:
            for p in D[n]:
                D.setdefault(p + n, []).append(p)
            del D[n]
        n += 1
Run Code Online (Sandbox Code Playgroud)

如果我做了类似的事情

primes …
Run Code Online (Sandbox Code Playgroud)

python generator

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

从信号的 fft 中找到局部最大值

我正在尝试找到信号的 fft 峰值,以用于进一步分析信号。我正在使用数据的 SpanSelect 并进行 fft,表示为频谱。我真的想让绘图具有交互性,并且用户单击一个点进行进一步分析,但我没有找到一种方法可以做到这一点,所以想要一种找到局部频率峰值的方法。频谱可能如下所示:

频谱图示例

因此,我想要一种方法来返回峰值为 38 Hz 的频率。有没有办法做到这一点?

python signal-processing fft widget matplotlib

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

用numpy.nan替换列表中的所有0

我有一个0的列表,我想改为np.nan进行计算.我试图做以下只替换前0:

l = [0,2,3,4,0]
l[l == 0] = np.nan
print l
[nan,2,3,4,0]
Run Code Online (Sandbox Code Playgroud)

有没有办法对列表中的每个项目进行替换?

python list

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