Python 如何用模零找到离给定值最近的除数
我正在尝试对神经网络的数据集进行预处理。因此,我需要将形状为(2040906,1)的数组重塑为批次数组 我需要一个大约1440行的批处理大小,但是2040906显然不能除以该数字(剩余部分为零) 我试着只计算除法的模,并删除尽可能多的行作为余数,这样除法将得到零的模。但我不想删除数据集的行 这是一个重现问题的示例片段Python 如何用模零找到离给定值最近的除数,python,pandas,numpy,Python,Pandas,Numpy,我正在尝试对神经网络的数据集进行预处理。因此,我需要将形状为(2040906,1)的数组重塑为批次数组 我需要一个大约1440行的批处理大小,但是2040906显然不能除以该数字(剩余部分为零) 我试着只计算除法的模,并删除尽可能多的行作为余数,这样除法将得到零的模。但我不想删除数据集的行 这是一个重现问题的示例片段 将numpy导入为np x=np.一((2040906,1)) np.拆分(x,1440) 对我来说,最理想的解决方案是某种函数,它为余数为0的给定值返回最近的除数。由于两个原因
将numpy导入为np
x=np.一((2040906,1))
np.拆分(x,1440)
对我来说,最理想的解决方案是某种函数,它为余数为0的给定值返回最近的除数。由于两个原因,寻找最大除数不是一个好方法
def find_best_除数(大小、低、高、步长=1):
最小截断,最佳除数=min((大小%除数,除数)
用于范围内的除数(低、高、阶跃))
返回最佳除数
这种方法很好,因为它允许很好地利用数据并使用适合于培训的填充。不确定这是最优雅的解决方案,但您可以执行以下操作:
def getdivisions(n,res=None):
res=res或[]
i=1
而i(接近-所有除数[ix-1]):
返回所有_除数[ix-1]
返回值
def获取最近的分割(n,接近=1440)
Out[6]:42
在你的例子中,它将返回42作为唯一最接近1440的除数。因此,
np.split(x,42)
应该可以工作。您是否希望分解2040906
?您可以使用(-2040906)%1440个样本填充数据集,从而使数据集可以按批量大小进行分割。用于填充的额外样本应该从整个数据集中随机选择。我认为这可能是问题的解决方案,因为我可以获得每个因子,并可以提取最接近我的值的因子,不是吗?填充的意思是填充或裁剪我的数据集?@Steven我的意思是填充。你不能用零填充最后一批,因为它会训练你的神经网络。您不能重复某些选定的样本,因为它会使训练偏向该样本。最好的解决方案是从数据集中随机选择填充数据。我知道,这绝对有效,但我有时间序列数据,我想从中进行训练。因此,我不能随机填写数据,如果我错了,请纠正我。应该提到的事实是,这是时间序列数据。我现在明白了。如果对数据进行排序,则随机选择将失败。也许可以在最后一次迭代中使用较小的批处理。我想keras就是这么做的。我会搜索一下,然后试试。谢谢你的建议。是的,看起来就像我想要的那个。有趣的是答案是42透^^