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
-
位与操作运算规律
A B AND 1 1 1 1 0 0 0 1 0 0 0 0 -
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
-
位或操作运算规律
A B OR 1 1 1 1 0 1 0 1 1 0 0 0 -
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
-
位异或操作运算规律
A B XOR 1 1 0 1 0 1 0 1 1 0 0 0 -
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
-
位取反操作运算规律
A NOT 1 0 0 1 -
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.]