对数据填充和采样的方法

记录一下训练前对数据的处理–数据填充和采样
例如:对每个视频数据的处理

数据填充:

1.使用np.vstack在原数据下面竖着堆叠

np.vstack((要堆叠的数据, np.zeros((想要的长度-现有数据的长度,列数))))

可以自己看看np.stack和np.hstack方法
2.使用np.pad在数据的周围或者任意一边进行数据填充

np.pad(想要填充的数据,((frow,arow),(lcol,rcol)),'constant', constant_values=((num,num),(num,num)))

上面代码的意思:((frow,arow),(lcol,rcol))指在数据的 前面多少行、后面多少行、左边多少列、右边多少列 填充数据,是位置信息。 ‘constant’是填充模式是常数模式,深度学习都用这个模式,别的模式可以自己搜一下。constant_values是要填充的数据,与前面对应,是数据信息。

如果想在周围添加均匀的数据,那么位置信息使用(num1,num2)即可,num1表示前面和左边,num2表示下面和右边,数据信息直接(num1,num2)

如果是一维数组直接用(left,right)作为要添加的位置信息。

3.使用np.linespace和np.interp进行插值

xloc = np.arange(frames.shape[0])
new_xloc = np.linspace(0,frames.shape[0],num=numpoints)
// new_xloc = np.linspace(start,end,num=numpoints)

在start和end之间生成一个均匀的序列,共有numpoints个

np.interp(new_xloc,xloc,data)

new_xloc是新生成的x坐标序列,xloc是原始坐标序列,data是对应的一行数据。注意,一行数据是同一关节不同时间的x或y或z位置
对自己的数据进行插值时,记得变成合适的shape
可以看以下例子:

x = np.linspace(0, 2 * np.pi, 10)
y = np.sin(x)
xvals = np.linspace(0, 2 * np.pi, 50)
yinterp = np.interp(xvals, x, y)
plt.plot(x, y, 'o')
plt.plot(xvals, yinterp, '-x')
plt.show()

代码运行结果
4.使用np.zeros(shape = ())先固定特征矩阵的大小,然后再改变里面的值


数据采样

1.使用np.sample进行随机采样
np.sample(frames, num):对frames随机采样num行,按照第一维来进行的。
2.直接选择前面的固定帧
可以在提取xyz时,只选择前面多少帧的。
如果已经给定所有帧的xyz位置的纯净版,那么可以直接用[0:想要的帧数,:]进行切片
3.对数据均匀采样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值