小编kev*_*aks的帖子

在 numpy/scipy 中按均匀间隔重新采样时间序列?

我有一个X在随机时间采样的随机变量T,类似于这个玩具数据:

import numpy as np
T = np.random.exponential(size=1000).cumsum()
X = np.random.normal(size=1000)
Run Code Online (Sandbox Code Playgroud)

这个时间序列看起来像这样: 在此输入图像描述

关键点是采样间隔不均匀:我的意思是 的所有元素np.diff(T)都不相等。我需要T,X以指定的宽度以均匀的间隔对时间序列进行重新采样dt,这意味着(np.diff(T)==dt).all()应该返回True

我可以使用 以均匀间隔对时间序列重新采样scipy.interpolate.interp1d,但此方法不允许我指定间隔大小dt

from scipy.interpolate import interp1d
T = np.linspace(T.min(),T.max(),T.size) # same range and size with a uniform interval
F = interp1d(T,X,fill_value='extrapolate') # resample the series on uniform interval
X = F(T) # Now it's resampled.
Run Code Online (Sandbox Code Playgroud)

本质问题是interp1d不接受数组,T除非T.size==X.size.

是否有另一种方法可以尝试以T,X均匀的宽度间隔对时间序列进行重新采样dt

numpy scipy

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

按元素上的条件值对 numpy 数组元素进行排序

我需要通过增加与另一个点的距离来对一个 numpy 点数组进行排序。

import numpy as np

def dist(i,j,ip,jp): 
    return np.sqrt((i-ip)**2+(j-jp)**2)

arr = np.array([[0,0],[1,2],[4,1]])
Run Code Online (Sandbox Code Playgroud)

我想做的是在固定点 [i,j]=[1,1] 和 arr 中的每个有序对 [ip,jp] 之间使用函数 dist(1,1,ip,jp) 来返回每个元素从最低到最高排序到 [i,j]。任何人都有一个快速的解决方案?

我想要的输出是 new_arr = np.array([[1,2],[0,0],[4,1]])

我有一些想法,但它们看起来效率极低。

谢谢!

python arrays sorting proximity

6
推荐指数
2
解决办法
7338
查看次数

在2D数组的滑动窗口中检查所有元素是否为True - Python

我有一个多维numpy数组,其中元素是True或False值:

import numpy as np 
#just making a toy array grid to show what I want to do 
grid = np.ones((4,4),dtype = 'bool')
grid[0,0]=False 
grid[-1,-1]=False 
#now grid has a few false values but is a 4x4 filled with mostly true values
Run Code Online (Sandbox Code Playgroud)

现在我需要生成另一个数组M,其中每个站点M [i,j]的值取决于grid [i:i + 2,j:j + 2],如

M = np.empty((4x4)) #elements to be filled

#here is the part I want to clean up 
for ii in range(4): 
    for jj in range(4): 

        #details here are unimportant. It's just that M[ii,jj] …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization multidimensional-array

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