Python numpy矢量化重采样,如熊猫数据帧重采样
我有一个Python numpy矢量化重采样,如熊猫数据帧重采样,python,arrays,numpy,Python,Arrays,Numpy,我有一个(42000)numpy数组,并希望每5个元素对每列(N=4)重新采样,例如max、min、left、right,使其形状为(4400) 我可以使用Pandas.DataFrame使用.resample('5Min').agg(~)或使用numpy数组和for loop-likeresult=[max(输入[I:I+5])来处理范围(0,len(输入),5)]内的I。但是,由于没有矢量化,使用大型输入数组需要花费大量时间。有什么方法可以使用np数组进行矢量化计算吗?这里有另一种方法可以在
(42000)
numpy数组,并希望每5个元素对每列(N=4)
重新采样,例如max、min、left、right,使其形状为(4400)
我可以使用
Pandas.DataFrame
使用.resample('5Min').agg(~)
或使用numpy数组和for loop-likeresult=[max(输入[I:I+5])来处理范围(0,len(输入),5)]内的I
。但是,由于没有矢量化,使用大型输入数组需要花费大量时间。有什么方法可以使用np数组进行矢量化计算吗?这里有另一种方法可以在引擎盖下使用numpy步长(a
是您的数组):
现在,您可以对所需的参数使用方法/切片:
#max
a.max(-1)[0].T
#min
a.min(-1)[0].T
#left
a[...,0][0].T
#right
a[...,-1][0].T
例如:
a
#[[ 0 1 2 3 4 5 6 7 8 9]
# [10 11 12 13 14 15 16 17 18 19]
# [20 21 22 23 24 25 26 27 28 29]
# [30 31 32 33 34 35 36 37 38 39]]
output for max
#[[ 4 9]
# [14 19]
# [24 29]
# [34 39]]
下面是另一种在引擎盖下使用numpy步幅的方法(
a
是您的阵列):
现在,您可以对所需的参数使用方法/切片:
#max
a.max(-1)[0].T
#min
a.min(-1)[0].T
#left
a[...,0][0].T
#right
a[...,-1][0].T
例如:
a
#[[ 0 1 2 3 4 5 6 7 8 9]
# [10 11 12 13 14 15 16 17 18 19]
# [20 21 22 23 24 25 26 27 28 29]
# [30 31 32 33 34 35 36 37 38 39]]
output for max
#[[ 4 9]
# [14 19]
# [24 29]
# [34 39]]
对于滑动最大-。对于一个通用的,获得滑动窗口并沿适当的轴使用ufunc-你能重塑numpy数组并沿正确的轴移动吗
np.max(input.reformate(4400,5),axis=-1)
@MBeale执行np.reformate
确保滑动max的顺序与skimage.util.view_as_块一样。对于一个通用的,获得滑动窗口并沿适当的轴使用ufunc-你能重塑numpy数组并沿正确的轴移动吗np.max(input.reformate(4400,5),axis=-1)
@MBeale不执行np.reformate
确保像skimage.util.view\u那样按块查看?谢谢!它几乎将我的过程提高了20倍!谢谢它几乎将我的过程提高了20倍!