首先我们先了解数组对于列表的优势
- 由于在数组中所有的数据类型都是一样的所以,数组的运算效率相对于列表来说是快得多
- 通过效率对比可以发现,数组处理数据的效率要远远高于列表的
我们再来介绍如何截断
截断很简单,填充使用numpy.pad()
numpy.pad np.pad()的参考文档:https://numpy.org/doc/stable/reference/generated/numpy.pad.html
使用的时候numpy.pad(array, pad_width, mode='constant', **kwargs)里面pad_width参数不太容易理解,下面是一个例子 :
[(2, 3), (0, 1)]
^^^^^^------ padding for second dimension(第二个元祖指代第二个维度)
^^^^^^-------------- padding for first dimension(第一个元祖指代第一个维度)
^------------------ no padding at the beginning of the first axis(大于等于0的整数,表示在这个维度开头要填充多少个数)
^--------------- pad with one "value" at the end of the first axis.
上面的例子最后的效果是:
- 第一个维度,开头填充2个数,结尾填充3个数
- 第二个维度,开头填充0个数,结尾填充1个数
示例代码
import numpy as np
def pad_or_cut(value: np.ndarray, target_length: int):
"""填充或截断一维numpy到固定的长度"""
data_row = None
if len(value) < target_length: # 填充
data_row = np.pad(value, [(0, target_length - len(value))])
elif len(value) > target_length: # 截断
data_row = value[:target_length]
return data_row
if __name__ == '__main__':
print("填充到10:", pad_or_cut(np.arange(0, 5), target_length=10))
print("截断到3:", pad_or_cut(np.arange(0, 5), target_length=3))
标签:target,填充,numpy,value,截断,length,pad,Numpy
From: https://blog.51cto.com/u_16316558/7977536