NumPy学习(7):位操作、字符串操作

NumPy-计算

NumPy-计算

  • NumPy中的ndarray可以直接进行基本运算,包括条件运算、统计运算,以及基本数组运算等。

条件运算

  • NumPy里的条件运算既包括常见的比较大小运算,还可以使用where函数实现查找操作。

    #函数格式
    where(condition, x if true, y if false)
    
  • 根据条件表达式condition的值返回特定的数组。当条件为真时返回x数组,条件为假时返回y数组

统计计算

  • NumPy提供了丰富的统计函数
    在这里插入图片描述

NumPy-位操作

  • 位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。

  • 位运算在计算机科学中广泛应用于优化和处理底层数据。

  • NumPy “bitwise_” 开头的函数是位运算函数。

  • NumPy 位运算包括以下几个函数

    函数描述
    bitwise_and按位与,对数组元素执行位与操作
    bitwise_or按位或,对数组元素执行位或操作
    bitwise_xor按位异或
    bitwise_not按位取反
    invert按位取反
    left_shift左移位运算,向左移动二进制表示的位
    right_shift右移位运算,向右移动二进制表示的位
  • 也可以使用 “&”、 “~”、 “|” 和 “^” 等操作符进行计算

    • 与运算(&): 对应位上的两个数字都为1时,结果为1;否则,结果为0。
    • 或运算(|): 对应位上的两个数字有一个为1时,结果为1;否则,结果为0。
    • 异或运算(^): 对应位上的两个数字相异时,结果为1;相同时,结果为0。
    • 取反运算(~): 对数字的每个位取反,即0变为1,1变为0。
    • 左移运算(<<): 将数字的所有位向左移动指定的位数,右侧用0填充。
    • 右移运算(>>): 将数字的所有位向右移动指定的位数,左侧根据符号位或补零。

bitwise_and

  • 位与操作运算规律

    ABAND
    111
    100
    010
    000
  • bitwise_and() 函数对数组中整数的二进制形式执行位与运算。

  • 例子

    import numpy as np 
     
    a,b = 13,17
    print (bin(a), bin(b))
    print (np.bitwise_and(13, 17))
    
    # 输出 13 和 17 的二进制形式
      0b1101 0b10001
    # 输出 13 和 17 的位与
      0b0001(1)
    

bitwise_or

  • 位或操作运算规律

    ABOR
    111
    101
    011
    000
  • bitwise_or() 函数对数组中整数的二进制形式执行位与运算。

  • 例子

    import numpy as np 
     
    a,b = 13,17
    print (bin(a), bin(b))
    print (np.bitwise_or(13, 17))
    
    # 输出 13 和 17 的二进制形式
      0b1101 0b10001
    # 输出 13 和 17 的位与
      0b11101(29)
    

bitwise_xor

  • 位异或操作运算规律

    ABXOR
    110
    101
    011
    000
  • bitwise_xor() 函数对数组中整数的二进制形式执行位异或运算。

  • 例子

    import numpy as np 
     
    a,b = 13,17
    print (bin(a), bin(b))
    print (np.bitwise_xor(13, 17))
    
    # 输出 13 和 17 的二进制形式
      0b1101 0b10001
    # 输出 13 和 17 的位异或
      0b11100(28)
    

bitwise_not

  • 位取反操作运算规律

    ANOT
    10
    01
  • bitwise_not() 函数对数组中整数的二进制形式执行位取反运算。

  • 例子

    import numpy as np 
     
    a,b = 13
    print (bin(a))
    print (np.bitwise_or(13))
    
    # 输出 13 的二进制形式
      0b1101 
    # 输出 13 的位取反
      0b0010(2)
    

invert

  • invert() 函数对数组中整数进行位取反运算,即 0 变成 1,1 变成 0。

  • 对于有符号整数,取该二进制数的补码,然后 +1。

    • 二进制数,最高位为0表示正数,最高位为 1 表示负数。
  • 例子

    import numpy as np 
     
    print (np.invert(np.array([13], dtype = np.uint8)))
    # 输出 13 的位反转,其中 ndarray 的 dtype 是 uint8:
    [242]
    
    print (np.binary_repr(13, width = 8))
    # 输出 13 的二进制表示:
     0b00001101
    
    print (np.binary_repr(242, width = 8))
    # 输出 242 的二进制表示:
     0b11110010
    
    

left_shift

  • left_shift() 函数将数组元素的二进制形式向左移动到指定位置,右侧附加相等数量的 0。

  • 左移的含义: n n n 左移 k k k 位,相当于 n n n 乘上 2 k 2^k 2k

  • 例子

    import numpy as np 
     
    print (np.left_shift(10,2))
    # 输出将 10 左移两位:
      40
    
    print (np.binary_repr(10, width = 8))
    # 输出 10 的二进制表示:
      0b00001010
    
    print (np.binary_repr(40, width = 8))
    # 输出 40 的二进制表示:
      0b00101000
    #  '00001010' 中的两位移动到了左边,并在右边添加了两个 0。
    

right_shift

  • right_shift() 函数将数组元素的二进制形式向右移动到指定位置,左侧附加相等数量的 0。

  • 例子

    import numpy as np 
     
    print (np.left_shift(40,2))
    # 输出将 40 左移两位:
      10
    
    print (np.binary_repr(40, width = 8))
    # 输出 40 的二进制表示:
      0b00101000
    
    print (np.binary_repr(10, width = 8))
    # 输出 10 的二进制表示:
      0b00001010
    #  '00101000' 中的两位移动到了右边,并在左边添加了两个 0。
    

NumPy-字符串操作

  • 字符串函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。

  • 它们基于 Python 内置库中的标准字符串函数。

  • 以下函数在字符数组类(numpy.char)中定义

    函数描述
    add()对两个数组的逐个字符串元素进行连接
    multiply()返回按元素多重连接后的字符串
    center()居中字符串
    capitalize()将字符串第一个字母转换为大写
    title()将字符串的每个单词的第一个字母转换为大写
    lower()数组元素转换为小写
    upper()数组元素转换为大写
    split()指定分隔符对字符串进行分割,并返回数组列表
    splitlines()返回元素中的行列表,以换行符分割
    strip()移除元素开头或者结尾处的特定字符
    join()通过指定分隔符来连接数组中的元素
    replace()使用新字符串替换字符串中的所有子字符串
    decode()数组元素依次调用str.decode
    encode()数组元素依次调用str.encode

numpy.char.add()

  • numpy.char.add() 函数依次对两个数组的元素进行字符串连接。

  • 例子

    import numpy as np 
     
    print (np.char.add(['hello'],[' xyz']))
    # 输出
      ['hello xyz']
    print (np.char.add(['hello', 'hi'],[' abc', ' xyz']))
    # 输出
      ['hello abc' 'hi xyz']
    

numpy.char.multiply()

  • numpy.char.multiply() 函数执行多重连接。

  • 例子

    import numpy as np 
     
    print (np.char.multiply('Runoob ',3))    
    # 输出
      Runoob Runoob Runoob 
    

numpy.char.center()

  • numpy.char.center() 函数用于将字符串居中,并使用指定字符在左侧和右侧进行填充。

  • 函数格式

    np.char.center(str, width, fillchar)
    
  • 参数说明

    参数描述
    str字符串
    width长度
    fillchar填充字符
  • 例子

    import numpy as np 
    print (np.char.center('Runoob', 20,fillchar = '*'))
    
    # 输出
      *******Runoob*******
    

numpy.char.capitalize()

  • numpy.char.capitalize() 函数将字符串的第一个字母转换为大写

  • 例子

    import numpy as np 
    print (np.char.capitalize('runoob'))
    
    # 输出
      Runoob
    

numpy.char.title()

  • numpy.char.title() 函数将字符串的每个单词的第一个字母转换为大写:

  • 例子

    import numpy as np
     
    print (np.char.title('i like runoob'))
    # 输出
      I Like Runoob
    

numpy.char.lower()

  • numpy.char.lower() 函数对数组的每个元素转换为小写。它对每个元素调用 str.lower。

  • 例子

    import numpy as np 
     
    #操作数组
    print (np.char.lower(['RUNOOB','GOOGLE']))
    # 输出
      ['runoob' 'google']
    
    # 操作字符串
    print (np.char.lower('RUNOOB'))
    # 输出
      runoob
    

numpy.char.upper()

  • numpy.char.upper() 函数对数组的每个元素转换为大写。它对每个元素调用 str.upper。

  • 例子

    import numpy as np 
     
    #操作数组
    print (np.char.upper(['runoob','google']))
    # 输出
      ['RUNOOB' 'GOOGLE']
    
    # 操作字符串
    print (np.char.upper('runoob'))
    # 输出
      RUNOOB
    

numpy.char.split()

  • numpy.char.split() 通过指定分隔符对字符串进行分割,并返回数组。默认情况下,分隔符为空格。

  • 函数格式

    np.char.split (str, sep)
    
  • 参数介绍

    参数描述
    str字符串
    sep分隔符默认为空格
  • 例子

    import numpy as np 
     
    # 分隔符默认为空格
    print (np.char.split ('i like runoob?'))
    # 输出
      ['i', 'like', 'runoob?']
    # 分隔符为 .
    print (np.char.split ('www.runoob.com', sep = '.'))
    # 输出
      ['www', 'runoob', 'com']
    

numpy.char.splitlines()

  • numpy.char.splitlines() 函数以换行符作为分隔符来分割字符串,并返回数组。

  • \n\r\r\n 都可用作换行符。

  • 例子

    import numpy as np 
     
    # 换行符 \n
    print (np.char.splitlines('i\nlike runoob?')) 
    print (np.char.splitlines('i\rlike runoob?'))
    
    # 输出
      ['i', 'like runoob?']
      ['i', 'like runoob?']
    

numpy.char.strip()

  • numpy.char.strip() 函数用于移除开头或结尾处的特定字符。

  • 函数格式

    np.char.strip(str, ch)
    
  • 参数介绍

    参数描述
    str字符串或数组
    ch特定字符
  • 例子

    import numpy as np 
     
    # 移除字符串头尾的 a 字符
    print (np.char.strip('ashok arunooba','a'))
     
    # 移除数组元素头尾的 a 字符
    print (np.char.strip(['arunooba','admin','java'],'a'))
    
    # 输出
      shok arunoob
      ['runoob' 'dmin' 'jav']
    

numpy.char.join()

  • numpy.char.join() 函数通过指定分隔符来连接数组中的元素或字符串

  • 函数格式

    np.char.join(ch, str)
    
  • 参数介绍

    参数描述
    ch特定字符或数组
    str字符串或数组
  • 例子

    import numpy as np 
     
    # 操作字符串
    print (np.char.join(':','runoob'))
     
    # 指定多个分隔符操作数组元素
    print (np.char.join([':','-'],['runoob','google']))
    
    # 输出
      r:u:n:o:o:b
      ['r:u:n:o:o:b' 'g-o-o-g-l-e']
    

numpy.char.replace()

  • numpy.char.replace() 函数使用新字符串替换字符串中的所有子字符串。

  • 函数格式

    np.char.replace(str, sub, dsc)
    
  • 参数说明

    参数描述
    str原字符串
    sub要被替换的字符串
    dsc用于替换的字符串
  • 例子

    import numpy as np 
     
    print (np.char.replace ('i like runoob', 'oo', 'cc'))
    # 输出
      i like runccb 
    

numpy.char.encode()

  • numpy.char.encode() 函数对数组中的每个元素调用 str.encode 函数。

  • 函数格式

    np.char.encode(str, code) 
    
  • 参数介绍

    参数说明
    str字符串
    code默认编码是 utf-8,可以使用标准 Python 库中的编解码器。
  • 例子

    import numpy as np 
     
    a = np.char.encode('runoob', 'cp500') 
    print (a)
    
    # 输出
      b'\x99\xa4\x95\x96\x96\x82'
    

numpy.char.decode()

  • numpy.char.decode() 函数对编码的元素进行 str.decode() 解码。

  • 函数格式

    np.char.decode(str, code) 
    
  • 参数介绍

    参数说明
    str字符串
    code解码方式
  • 例子

    import numpy as np 
     
    a = np.char.encode('runoob', 'cp500') 
    print (a)
    print (np.char.decode(a,'cp500'))
    
    # 输出
      b'\x99\xa4\x95\x96\x96\x82'
      runoob
    

NumPy-数学函数

三角函数

  • NumPy 提供了标准的三角函数

    • 三角函数:
      • sin()、cos()、tan() 函数返回给定角度的 sin,cos 和 tan 值
    • 反三角函数
      • arcsin,arccos,和 arctan 函数返回给定角度的 sin,cos 和 tan 的反三角函数。
      • 反三角函数的结果可以通过 numpy.degrees() 函数将弧度转换为角度。
  • 例子

    import numpy as np
     
    a = np.array([0,30,45,60,90])  
    sin = np.sin(a*np.pi/180)  
    print (sin)
    # 输出正弦值的数组:
      [ 0.  0.5  0.70710678  0.8660254  1.]
    
    inv = np.arcsin(sin)  
    print (inv)
    # 计算角度的反正弦,返回值以弧度为单位
      [ 0.  0.52359878  0.78539816  1.04719755  1.57079633]
    
    print (np.degrees(inv))
    # 通过转化为角度制来检查结果:
      [ 0.  30.  45.  60.  90. ]
    

舍入函数

numpy.around()
  • numpy.around() 函数返回指定数字的四舍五入值。

  • 函数格式

    numpy.around(a,decimals)
    
  • 参数说明

    参数描述
    a数组
    decimals舍入的小数位数。 默认值为0。
    如果为负,整数将四舍五入到小数点左侧的位置
  • 例子

    import numpy as np
     
    a = np.array([1.0,  5.55,  123,  0.567,  25.532])  
    print ('舍入后:')
    
    print (np.around(a))
    # 输出
      [ 1.  6.  123.  1.  26.]
    print (np.around(a, decimals =  1))
    
    # 输出
      [ 1.  5.6  123.  0.6  25.5]
    
    print (np.around(a, decimals =  -1))
    # 输出
      [ 1.  6.  123.  1.  26.]
    
numpy.floor()
  • numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整。

  • 例子

    import numpy as np
     
    a = np.array([-1.7,  1.5,  -0.2,  0.6,  10])
    print (np.floor(a))
    # 输出
      [-2.  1. -1.  0. 10.]
    
numpy.ceil()
  • numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整。

  • 例子

    import numpy as np
     
    a = np.array([-1.7,  1.5,  -0.2,  0.6,  10])  
    print (np.ceil(a))
    # 输出
      [-1.  2. -0.  1. 10.]
    

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值