首页 > 其他分享 >Numpy填充或截断数组到固定长度

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

时间:2023-10-22 17:05:44浏览次数:37  
标签:target 填充 numpy value 截断 length pad 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))

标签:target,填充,numpy,value,截断,length,pad,Numpy
From: https://blog.51cto.com/u_16316558/7977536

相关文章

  • 如何使用MyBatis-Plus实现字段的自动填充?一文教会你
    环境说明:Windows10+Idea2021.3.2+Jdk1.8+SpringBoot2.3.1.RELEASE前言在实际的开发过程中,我们经常需要在进行数据库操作时自动填充某些字段值,比如创建时间,更新时间等。手动填充虽然可行,但是容易出错,并且代码冗余,影响开发效率。MyBatis-Plus提供了字段自动填充的功能,可以......
  • numpy的使用
    创建NumPy数组:从Python列表创建数组:使用np.array()函数可以从Python列表创建NumPy数组。例如:arr=np.array([1,2,3,4,5])使用特殊数组:NumPy提供了一些快速创建特殊数组的函数,如全零、全一、单位矩阵等。例如:zeros=np.zeros((2,3))#创建一个2x3的全零数组......
  • numpy的数据类型转换和数组广播
    numpy对象的常用属性第一种方法装好python,然后打开终端输入pipinstalljupyter(如果觉得速度慢可以加上镜像站-ihttps://pypi.douban.com/simple/),然后再输入pipinstallnotebook(这里和前面一样,觉得慢就加镜像),打开在终端输入jupyternotebook。另一种方法就是去anacond......
  • 无涯教程-NumPy - decode()函数
    此函数调用numpy.char.decode()解码给定的字符串。importnumpyasnpa=np.char.encode('hello','cp500')printaprintnp.char.decode(a,'cp500')其输出如下-�����hello参考链接https://www.learnfk.com/numpy/numpy-char-decode.html......
  • 无涯教程-NumPy - join()函数
    此方法返回一个字符串,其中各个字符由指定的分隔符字符连接在一起。importnumpyasnpprintnp.char.join(':','dmy')printnp.char.join([':','-'],['dmy','ymd'])其输出如下-d:m:y['d:m:y''y-m-d']参考链接https://ww......
  • 无涯教程-NumPy - center()函数
    此函数返回所需宽度的数组,以使输入字符串居中并在左侧和右侧使用fillchar进行填充。importnumpyasnp#np.char.center(arr,width,fillchar)printnp.char.center('hello',20,fillchar='*')这是它的输出-*******hello********参考链接https://www.learnfk.com/nu......
  • 无涯教程-NumPy - multiply()函数
    此函数执行多个串联。importnumpyasnpprintnp.char.multiply('Hello',3)其输出如下-HelloHelloHello参考链接https://www.learnfk.com/numpy/numpy-char-multiply.html......
  • 无涯教程-NumPy - 右移运算符函数
    numpy.right_shift()函数将数组元素的二进制表示形式向右移动指定的位置,并在左侧添加相等数量的0。importnumpyasnpprint'Rightshift40bytwopositions:'printnp.right_shift(40,2)print'\n'print'Binaryrepresentationof40:'printnp.binary_repr(......
  • 无涯教程-NumPy - 左移运算符函数
    numpy.left_shift()函数将数组元素的二进制向左移动指定位置,从右边追加等号0。importnumpyasnpprint'Leftshiftof10bytwopositions:'printnp.left_shift(10,2)print'\n'print'Binaryrepresentationof10:'printnp.binary_repr(10,width=......
  • 无涯教程-NumPy - delete函数
    此函数返回一个新数组,其中指定的子数组已从数组中删除,与insert()函数一样,如果不使用axis参数,则将输入数组展平,该函数采用以下参数-Numpy.delete(arr,obj,axis)Sr.No.Parameter&描述1arr输入数组2obj可以是切片,整数或整数数组,指示要从输入数组中删除的子数组3......