NumPy 是用于处理数组的 python 库,NumPy 中的数组对象称为 ndarray,它提供了许多支持函数,使得利用 ndarray 非常容易。Numpy官方网址
NumPy 安装
使用pip安装NumPy 模块:
pip install numpy
NumPy 入门
创建numpy数组,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
运行程序:
NumPy 创建数组
创建不同维度的数组,示例程序如下:
import numpy as np
# 0-dimensional array
arr = np.array(42)
print('数组:',arr,'维度:', arr.ndim)
# 1-dimensional array
arr = np.array([1, 2, 3, 4, 5])
print('数组:',arr,'维度:', arr.ndim)
# 2-dimensional array
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('数组:',arr,'维度:', arr.ndim)
# 3-dimensional array
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print('数组:',arr,'维度:', arr.ndim)
运行程序:
NumPy 数组索引
通过数组索引访问数组元素,NumPy 数组中的索引以 0 开始,以此类推,示例程序如下:
import numpy as np
# 1-dimensional array
arr = np.array([1, 2, 3, 4, 5])
print('数组第一个元素:',arr[0])
print('数组最后一个元素:',arr[-1])
# 2-dimensional array
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('数组第一维度第一个元素:',arr[0,0])
print('数组第二维度第二个元素:',arr[1,1])
print('数组最后维度最后一个元素:',arr[-1,-1])
# 3-dimensional array
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print('数组第一个数组的第一个数组的第一个元素:',arr[0,0,0])
print('数组第二个数组的第二个数组的第二个元素:',arr[1,1,1])
print('数组最后一个数组的最后一个数组的最后一个元素:',arr[-1,-1,-1])
运行程序:
NumPy 数组切片
数组切片,数组名[start:end],返回结果包含start索引对应的元素,不包含end索引对应的元素;数组名[start:end:step],step是步长,示例程序如下:
import numpy as np
# 1-dimensional array
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print('数组切片,索引1到索引3(包含1,不包含3)的元素:', arr[1:3])
print('数组切片,索引2到最后一个元素:', arr[2:])
print('数组切片,索引0到索引4(不包含4)的元素:', arr[:4])
print('数组切片,索引0到从末尾开始索引2的元素:', arr[:-2])
print('数组切片,从末尾开始索引3到1的元素:',arr[-3:-1])
print('数组切片,每隔2个元素取一个元素:',arr[1:4:2])
print('数组切片,每隔2个元素取一个元素,索引从0开始:',arr[::2])
# 2-dimensional array
arr = np.array([[1, 2, 3,4,5], [6,7,8,9,10]])
print('数组切片,索引1行,索引1到索引3(包含1,不包含3)的元素:', arr[1,1:3])
print('数组切片,索引1行,索引2到最后一个元素:', arr[1,2:])
print('数组切片,索引0行,索引0到索引4(不包含4)的元素:', arr[0,:4])
print('数组切片,索引0和1行,索引1到索引4的元素:', arr[0:2,1:4])
# 3-dimensional array
arr = np.array([[[1, 2,3,4], [3, 4,5,6]], [[5, 6,7,8], [7, 8,9,10]]])
print('数组切片,索引1层,索引1行,索引1到索引3(包含1,不包含3)的元素:', arr[1,1,1:3])
print('数组切片,索引1层,索引1行,索引2到最后一个元素:', arr[1,1,2:])
print('数组切片,索引0层,索引0行,索引0到索引4(不包含4)的元素:', arr[0,0,:4])
print('数组切片,索引0层,索引0行,索引1到索引4的元素:', arr[0,0,1:4])
print('数组切片,索引0层,索引1行,索引1到索引4的元素:', arr[0,1,1:4])
print('数组切片,索引1层,索引0行,索引1到索引4的元素:', arr[1,0,1:4])
运行程序:
NumPy 数据类型
NumPy 中所有数据类型以及用于表示它们的字符如下:
字符 | 数据类型 |
---|---|
i | 整数 |
b | 布尔 |
u | 无符号整数 |
f | 浮点 |
c | 复合浮点数 |
m | timedelta |
M | datetime |
O | 对象 |
S | 字符串 |
U | unicode字符串 |
V | 固定的其他类型的内存块 |
使用dtype可以返回数组的数据类型,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr.dtype)
arr = np.array(['a', 'b', 'c'])
print(arr.dtype)
arr = np.array([1.2, 3.4, 5.6])
print(arr.dtype)
arr = np.array([False, True])
print(arr.dtype)
运行程序:
使用已定义的数据类型创建数组,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4], dtype='S')
print(arr)
print(arr.dtype)
arr = np.array([1, 2, 3, 4], dtype='i4')
print(arr)
print(arr.dtype)
arr = np.array([1, 2, 3, 4], dtype='f')
print(arr)
print(arr.dtype)
运行程序:
转换已有数组的数据类型,示例程序如下:
import numpy as np
arr = np.array([1.1, 2.1, 3.1])
newarr = arr.astype('i')
print(newarr)
print(newarr.dtype)
arr = np.array([1, 0, 3])
newarr = arr.astype(bool)
print(newarr)
print(newarr.dtype)
arr = np.array([1, 2, 3])
newarr = arr.astype(str)
print(newarr)
print(newarr.dtype)
运行程序:
NumPy 数组COPY
复制数组,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
copyarr = arr.copy()
arr[0] = 9
arr[1] = 8
print('arr数组:',arr)
print('copyarr数组:',copyarr)
运行程序:
NumPy 数组VIEW
数组视图,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
arrview = arr.view()
arr[0] = 9
arr[1] = 8
print(arr)
print(arrview)
运行程序:
copy和数组view之间的主要区别在于copy是一个新数组,而view只是原始数组的view
NumPy 数组形状
数组的形状是每个维中元素的数量,示例程序如下:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr.shape)
arr = np.array([1, 2, 3, 4], ndmin=6)
print(arr)
print(arr.shape)
print(arr[0, 0, 0, 0, 0, 3])
运行程序:
NumPy 数组重塑
重塑意味着更改数组的形状,示例代码如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# 1维数组转化为2维数组
newarr = arr.reshape(4, 3)
print('2维数组',newarr)
# 2维数组转化为1维数组
newarr1 = newarr.flatten()
print('1维数组',newarr1)
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# 1维数组转化为3维数组
newarr = arr.reshape(2, 3, 2)
print('3维数组',newarr)
# 3维数组转化为1维数组
newarr1 = newarr.flatten()
print('1维数组',newarr1)
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
# 1维数组转化为3维数组
newarr = arr.reshape(2, 3, -1)
print('3维数组',newarr)
# 3维数组转化为1维数组
newarr1 = newarr.reshape(-1)
print('1维数组',newarr1)
运行程序:
展平数组(Flattening the arrays)是指将多维数组转换为 1D 数组,可以使用flatten()或者reshape(-1)
NumPy 数组迭代
迭代意味着逐一遍历元素,可以使用 for 循环来完成,示例程序如下:
import numpy as np
arr = np.array([1, 2])
for x in arr:
print(x)
arr = np.array([[1, 2], [4, 5]])
for x in arr:
print(x)
for x in arr:
for y in x:
print(y)
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in arr:
for y in x:
for z in y:
print(z)
运行程序:
使用 nditer() 迭代数组,示例程序如下:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print('遍历时跳过1个元素')
for x in np.nditer(arr[:, ::2]):
print(x)
运行程序:
使用 ndenumerate() 进行枚举迭代,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
print(idx, x)
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for idx, x in np.ndenumerate(arr):
print(idx, x)
运行程序:
NumPy 数组连接
使用concatenate()函数连接,示例程序如下:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.concatenate((arr1, arr2))
print('沿着axis=0方向合并:',arr)
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print('沿着axis=1方向合并:',arr)
运行程序:
使用堆栈函数连接数组,示例程序如下:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.stack((arr1, arr2), axis=1)
print('stack连接数组:',arr)
# 沿行堆叠
arr = np.hstack((arr1, arr2))
print('hstack连接数组:',arr)
# 沿列堆叠
arr = np.vstack((arr1, arr2))
print('vstack连接数组:',arr)
# 沿高度堆叠
arr = np.dstack((arr1, arr2))
print('dstack连接数组:',arr)
运行程序:
NumPy 数组拆分
使用 array_split() 分割数组,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)
print(newarr[0])
print(newarr[1])
print(newarr[2])
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
newarr = np.array_split(arr, 3)
print(newarr)
newarr = np.array_split(arr, 3, axis=1)
print(newarr)
运行程序:
NumPy 数组搜索
在数组中搜索(检索)某个值,然后返回获得匹配的索引,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
print('元素4出现的位置',x)
x = np.where(arr%2 == 0)
print('偶数元素出现的位置',x)
x = np.where(arr%2 == 1)
print('奇数元素出现的位置',x)
运行程序:
NumPy 数组排序
sort()函数将对指定的数组进行排序,示例程序如下:
import numpy as np
arr = np.array([3, 2, 10, 6,4, 5, 9, 8, 7, 1])
print('原始数组:',arr)
print('排序后数组:',np.sort(arr))
arr = np.array(['d','q','z','a','r'])
print('原始数组:',arr)
print('排序后数组:',np.sort(arr))
arr = np.array([[3, 2, 4,1,5,8], [5, 0, 1,9,3,2]])
print('原始数组:',arr)
print('排序后数组:',np.sort(arr))
运行程序:
NumPy 数组过滤
从现有数组中取出一些元素并从中创建新数组称为过滤(filtering),示例代码如下:
import numpy as np
arr = np.array([41, 42, 43, 44])
filterarr = [True, False, True, False]
newarr = arr[filterarr]
print(newarr)
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filterarr = arr % 2 == 0
newarr = arr[filterarr]
print(filterarr)
print(newarr)
运行程序:
NumPy 随机数
- 伪随机:通过生成算法生成的随机数,使用较多
- 真随机:从某个外部来源获取随机数据,外部来源通常是我们的击键、鼠标移动、网络数据
NumPy 提供了 random 模块来处理随机数,示例程序如下:
from numpy import random
x = random.randint(100)
print(x)
x = random.rand()
print(x)
运行程序:
randint() 方法生成随机数组,示例程序如下:
from numpy import random
x=random.randint(100, size=(5))
print(x)
x = random.randint(100, size=(3, 5))
print(x)
运行程序:
rand() 方法生成随机数组,示例程序如下:
from numpy import random
x = random.rand(5)
print(x)
x = random.rand(3, 5)
print(x)
运行程序:
choice() 方法从数组生成随机数,示例程序如下:
from numpy import random
x = random.choice([3, 5, 7, 9])
print(x)
x = random.choice([3, 5, 7, 9], size=(3, 5))
print(x)
运行程序:
choice() 方法可以指定每个值的概率,示例程序如下:
from numpy import random
# 随机生成100个整数,其中3的概率为0.1,5的概率为0.3,7的概率为0.6,9的概率为0.0
x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(100))
print(x)
运行程序:
shuffle()随机改变数组元素的排列,示例程序如下:
from numpy import random
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 随机打乱数组
random.shuffle(arr)
print('原始数组:',arr)
print('随机打乱数组:', random.shuffle(arr))
运行程序:
permutation()随机改变数组元素的排列,不改变原数组,产生新数组,示例程序如下:
from numpy import random
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 随机打乱数组
new_arr = random.permutation(arr)
print('原始数组:',arr)
print('随机打乱数组:',new_arr)
运行程序:
正态分布
random.normal()生成正态分布数据,示例程序如下:
from numpy import random
# 平均值为1,标准差为2,生成2行3列的随机数
x = random.normal(loc=1, scale=2, size=(2, 3))
print(x)
运行程序:
二项分布
random.binomial()生成二项分布数据,示例程序如下:
from numpy import random
# 试验10次,每次试验的成功概率为0.5,试验10次的结果
x = random.binomial(n=10, p=0.5, size=10)
print(x)
运行程序:
泊松分布
random.poisson()生成泊松分布数据,示例程序如下:
from numpy import random
# 生成10个服从泊松分布的随机数,λ=2
x = random.poisson(lam=2, size=10)
print(x)
运行程序:
均匀分布
random.uniform()生成均匀分布数据,示例程序如下:
from numpy import random
# 生成2行3列的随机数组,范围为0到1
x = random.uniform(low=0.0, high=1.0, size=(2, 3))
print(x)
运行程序:
Logistic 分布
random.logistic()生成Logistic分布数据,示例程序如下:
from numpy import random
# 生成2行3列的随机数据,服从logistic分布,峰值为1,标准差为2
x = random.logistic(loc=1, scale=2, size=(2, 3))
print(x)
运行程序:
多项分布
random.multinomial()生成多项分布数据,示例程序如下:
from numpy import random
# 生成一个6个元素的多项式分布,每个元素的概率都是1/8,共2组
x = random.multinomial(n=6, pvals=[1/8, 1/8, 1/8, 1/8, 1/8, 1/8], size=2)
print(x)
运行程序:
指数分布
random.exponential()生成指数分布数据,示例程序如下:
from numpy import random
# 生成2行3列的指数分布随机数,scale=2表示平均值为2
x = random.exponential(scale=2, size=(2, 3))
print(x)
运行程序:
卡方分布
random.chisquare()生成卡方分布数据,示例程序如下:
from numpy import random
# 生成2行3列的卡方分布随机数,df=2表示自由度为2
x = random.chisquare(df=2, size=(2, 3))
print(x)
运行程序:
瑞利分布
random.rayleigh()生成瑞利分布数据,示例程序如下:
from numpy import random
# 生成2x3的瑞利分布数据,scale为2表示标准差为2,size表示生成的数组大小
x = random.rayleigh(scale=2, size=(2, 3))
print(x)
运行程序:
帕累托分布
random.pareto()生成帕累托分布数据,示例程序如下:
from numpy import random
# 生成2行3列的pareto分布随机数,a=2表示形状参数,越大越偏斜,越小越正态分布,size=(2, 3)表示生成2行3列的数组
x = random.pareto(a=2, size=(2, 3))
print(x)
运行程序:
Zipf 分布
random.zipf()生成Zipf 分布数据,示例程序如下:
from numpy import random
# 生成2x3的zipf分布随机数,a=2表示分布参数,size=(2, 3)表示生成2行3列的矩阵
x = random.zipf(a=2, size=(2, 3))
print(x)
运行程序:
NumPy 通用方法
算术运算
add()将两个数组的内容相加,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([10, 11, 12, 13, 14, 15])
arr2 = np.array([20, 21, 22, 23, 24, 25])
# 数组相加
newarr = np.add(arr1, arr2)
print(newarr)
运行程序:
subtract()将一个数组中的值与另一个数组中的值相减,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([20, 21, 22, 23, 24, 25])
# 数组 arr1 减去 arr21
newarr = np.subtract(arr1, arr2)
print(newarr)
运行程序:
multiply()将一个数组中的值与另一个数组中的值相乘,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([20, 21, 22, 23, 24, 25])
# 数组相乘
newarr = np.multiply(arr1, arr2)
print(newarr)
运行程序:
divide()将一个数组中的值与另一个数组中的值相除,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 5, 10, 8, 2, 33])
# 计算 arr1 除以 arr2 的商
newarr = np.divide(arr1, arr2)
print(newarr)
运行程序:
power()将第一个数组的值乘以第二个数组的值的幂,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 2, 4, 3, 2, 1])
# 计算arr1的arr2次方
newarr = np.power(arr1, arr2)
print(newarr)
运行程序:
mod() 和 remainder()都返回 第一个数组对应第二个数组中的余数,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 3])
# 计算余数
newarr = np.mod(arr1, arr2)
print(newarr)
运行程序:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 3])
# 计算余数
newarr = np.remainder(arr1, arr2)
print(newarr)
divmod()返回商和模,返回两个数组,第一个数组包含商,第二个数组包含模,示例程序如下:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 3])
# 计算两个数组的商和余数
newarr = np.divmod(arr1, arr2)
print('商:',newarr[0])
print('余数:',newarr[1])
运行程序:
absolute()绝对值运算,返回新数组,示例程序如下:
import numpy as np
arr = np.array([-1, -2, 1, 2, 3, -4])
# 取绝对值
newarr = np.absolute(arr)
print(newarr)
运行程序:
四舍五入
trunc() 和 fix()四舍五入,返回最接近零的浮点数,示例程序如下:
import numpy as np
# 四舍五入, 向下取整
arr = np.trunc([-3.1666, 3.6667])
print(arr)
# 四舍五入, 向下取整
arr = np.fix([-3.1666, 3.6667])
print(arr)
运行程序:
around()四舍五入,示例程序如下:
import numpy as np
# 四舍五入,保留两位小数
arr = np.around(3.1666, 2)
print(arr)
运行程序:
floor()四舍五入,返回最接近的小整数,示例程序如下:
import numpy as np
# 四舍五入,最接近的小整数
arr = np.floor([-3.1666, 3.6667])
print(arr)
运行程序:
ceil()四舍五入,返回最接近的大整数,示例程序如下:
import numpy as np
# 四舍五入,向上取整,最接近的大整数
arr = np.ceil([-3.1666, 3.6667])
print(arr)
运行程序:
Log
log2(),log10(),log()示例程序如下:
import numpy as np
arr = np.arange(1, 10)
# 计算log2, log10, log
arrlog2 = np.log2(arr)
arrlog10 = np.log10(arr)
arrlog = np.log(arr)
print(arr)
print(arrlog2)
print(arrlog10)
print(arrlog)
运行程序:
求和
add()数组求和,返回新数组,示例程序如下:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
newarr = np.add(arr1, arr2)
print(newarr)
运行程序:
sum()数组值求和,可指定轴,示例程序如下:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
# 数组相加,默认是逐元素相加
n = np.sum([arr1, arr2])
print(n)
# 数组相加,指定轴axis=0
n = np.sum([arr1, arr2], axis=0)
print(n)
# 数组相加,指定轴axis=1
n = np.sum([arr1, arr2], axis=1)
print(n)
运行程序:
cumsum()累积和,返回数组,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
newarr = np.cumsum(arr)
print(newarr)
运行程序:
乘积
prod()计算乘积,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4])
# 计算乘积
x = np.prod(arr)
print(x)
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
# 计算两个数组的乘积
x = np.prod([arr1, arr2])
print(x)
# 计算两个数组的乘积,并指定轴axis=1
newarr = np.prod([arr1, arr2], axis=1)
print(newarr)
# 计算两个数组的乘积,并指定轴axis=0
newarr = np.prod([arr1, arr2], axis=0)
print(newarr)
运行程序:
cumprod()累积乘积,示例程序如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
newarr = np.cumprod(arr)
print(newarr)
运行程序:
差异
diff()数组中连续元素作差,示例程序如下:
import numpy as np
arr = np.array([10, 15, 25, 5])
# 计算差分
newarr = np.diff(arr)
print(newarr)
# 计算差分 n=2,即执行两次差分
newarr = np.diff(arr, n=2)
print(newarr)
运行程序:
最小公倍数
lcm(),计算最小公倍数,示例程序如下:
import numpy as np
num1 = 4
num2 = 6
# 最小公倍数
x = np.lcm(num1, num2)
print(x)
arr = np.array([3, 6, 9])
# 数组最小公倍数
x = np.lcm.reduce(arr)
print(x)
运行程序:
最大公约数
gcd(),计算最大公约数,示例程序如下:
import numpy as np
num1 = 6
num2 = 9
# 计算最大公约数
x = np.gcd(num1, num2)
print(x)
arr = np.array([20, 8, 32, 36, 16])
# 计算数组中最大公约数
x = np.gcd.reduce(arr)
print(x)
运行程序:
三角函数
sin()、cos() 和 tan()计算,示例程序如下:
import numpy as np
x = np.sin(np.pi/2)
print(x)
arr = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])
x = np.sin(arr)
print(x)
x = np.cos(np.pi/2)
print(x)
arr = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])
x = np.cos(arr)
print(x)
x = np.tan(np.pi/4)
print(x)
arr = np.array([np.pi/4, np.pi/6, np.pi/8, np.pi/10])
x = np.tan(arr)
print(x)
运行程序:
deg2rad(),度数转换为弧度,rad2deg(),弧度到度数,示例程序如下:
import numpy as np
arr = np.array([90, 180, 270, 360])
x = np.deg2rad(arr)
print(x)
arr = np.array([np.pi/2, np.pi, 1.5*np.pi, 2*np.pi])
x = np.rad2deg(arr)
print(x)
运行程序:
arcsin()、arccos() 和 arctan(),示例程序如下:
import numpy as np
x = np.arcsin(1.0)
print(x)
y = np.arccos(1.0)
print(y)
z = np.arctan(1.0)
print(z)
arr = np.array([1, -1, 0.1])
x = np.arcsin(arr)
print(x)
y = np.arccos(arr)
print(y)
z = np.arctan(arr)
print(z)
运行程序:
双曲线函数
sinh()、cosh() 和 tanh(),示例程序如下:
import numpy as np
x = np.sinh(np.pi/2)
print(x)
y = np.cosh(np.pi/2)
print(y)
z = np.tanh(np.pi/4)
print(z)
arr = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])
x = np.sinh(arr)
print(x)
arr = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])
y = np.cosh(arr)
print(y)
arr = np.array([np.pi/4, np.pi/3, np.pi/2, np.pi/5])
z = np.tanh(arr)
print(z)
运行程序:
arcsinh()、arccosh() 和 arctanh(),示例程序如下:
import numpy as np
x = np.arcsinh(1.0)
print(x)
y = np.arccosh(1.0)
print(y)
z = np.arctanh(0.5)
print(z)
arr = np.array([0.1, 0.2, 0.5])
x = np.arctanh(arr)
print(x)
arr = np.array([1.0, 2.0, 3.0])
x = np.arcsinh(arr)
print(x)
arr = np.array([1.0, 2.0, 3.0])
x = np.arccosh(arr)
print(x)
运行程序:
集合操作
unique() 方法从任何数组中查找唯一元素,示例程序如下:
import numpy as np
arr = np.array([1, 1, 1, 2, 3, 4, 5, 5, 6, 7])
# unique()函数可以返回数组中唯一的元素
x = np.unique(arr)
print(x)
运行程序:
union1d()方法查找两个数组的唯一值,示例程序如下:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([3, 4, 5, 6])
# union1d()函数用于求两个数组的并集,即两个数组中所有不重复的元素组成的数组
newarr = np.union1d(arr1, arr2)
print(newarr)
运行程序:
intersect1d()方法查找两个数组中都存在的值==(交集)==,示例程序如下:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([3, 4, 5, 6])
# intersect1d()函数用于求两个数组的交集,返回一个新的数组,该数组包含两个数组的公共元素
newarr = np.intersect1d(arr1, arr2, assume_unique=True)
print(newarr)
运行程序:
setdiff1d()方法查找第一组中不存在于第二组中的值==(差集)==,示例程序如下:
import numpy as np
set1 = np.array([1, 2, 3, 4])
set2 = np.array([3, 4, 5, 6])
# 计算差集,即set1中存在而set2中不存在的元素
newarr = np.setdiff1d(set1, set2, assume_unique=True)
print(newarr)
运行程序:
setxor1d()方法查找两个集合中互相不存在的值==(对称差集)==,示例程序如下:
import numpy as np
set1 = np.array([1, 2, 3, 4])
set2 = np.array([3, 4, 5, 6])
# 计算对称差集,即两个集合中不重复的元素
newarr = np.setxor1d(set1, set2, assume_unique=True)
print(newarr)
运行程序:
参考学习链接: https://www.w3ccoo.com/python/numpy_intro.html
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距