0
点赞
收藏
分享

微信扫一扫

Numpy填充或截断数组到固定长度


首先我们先了解数组对于列表的优势

  • 由于在数组中所有的数据类型都是一样的所以,数组的运算效率相对于列表来说是快得多

Numpy填充或截断数组到固定长度_示例代码

  • 通过效率对比可以发现,数组处理数据的效率要远远高于列表的

我们再来介绍如何截断

截断很简单,填充使用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))

举报

相关推荐

0 条评论