我有两个具有相同索引的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)
有没有办法做到这一点?
我有一些列表,如[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) 我试图了解 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左右呢?
我是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的新手,并尝试执行以下操作:
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)?或者有没有办法通过直接测试长度来做到这一点?
我正在尝试编写一个可以对某些数据进行零填充的函数,直到其长度等于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中理解生成器时遇到了一些麻烦.假设我有以下简单的生成器:
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) 我正在尝试找到信号的 fft 峰值,以用于进一步分析信号。我正在使用数据的 SpanSelect 并进行 fft,表示为频谱。我真的想让绘图具有交互性,并且用户单击一个点进行进一步分析,但我没有找到一种方法可以做到这一点,所以想要一种找到局部频率峰值的方法。频谱可能如下所示:

因此,我想要一种方法来返回峰值为 38 Hz 的频率。有没有办法做到这一点?
我有一个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)
有没有办法对列表中的每个项目进行替换?