手把手一起学习Python NumPy

NumPy 是用于处理数组的 python 库,NumPy 中的数组对象称为 ndarray,它提供了许多支持函数,使得利用 ndarray 非常容易。Numpy官方网址

NumPy 安装

使用pip安装NumPy 模块:

pip install numpy

NumPy 入门

创建numpy数组,示例程序如下:

import numpy as nparr = 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复合浮点数
mtimedelta
Mdatetime
O对象
S字符串
Uunicode字符串
V固定的其他类型的内存块

使用dtype可以返回数组的数据类型,示例程序如下:

import numpy as nparr = 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 nparr = 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 nparr = 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 nparr = np.array([1, 2, 3, 4, 5])
copyarr = arr.copy()
arr[0] = 9
arr[1] = 8print('arr数组:',arr)
print('copyarr数组:',copyarr)

运行程序:

在这里插入图片描述

NumPy 数组VIEW

数组视图,示例程序如下:

import numpy as nparr = np.array([1, 2, 3, 4, 5])
arrview = arr.view()
arr[0] = 9
arr[1] = 8print(arr)
print(arrview)

运行程序:
在这里插入图片描述
copy和数组view之间的主要区别在于copy是一个新数组,而view只是原始数组的view

NumPy 数组形状

数组的形状是每个维中元素的数量,示例程序如下:

import numpy as nparr = 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 nparr = 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 nparr = 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 nparr = 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 nparr = 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 nparr1 = 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 nparr1 = 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 nparr = 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 nparr = 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 nparr = 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 nparr = 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 randomx = random.randint(100)
print(x)
x = random.rand()
print(x)

运行程序:

在这里插入图片描述
randint() 方法生成随机数组,示例程序如下:

from numpy import randomx=random.randint(100, size=(5))
print(x)
x = random.randint(100, size=(3, 5))
print(x)

运行程序:

在这里插入图片描述
rand() 方法生成随机数组,示例程序如下:

from numpy import randomx = random.rand(5)
print(x)
x = random.rand(3, 5)
print(x)

运行程序:

在这里插入图片描述
choice() 方法从数组生成随机数,示例程序如下:

from numpy import randomx = 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 nparr = np.array([1, 2, 3, 4, 5])# 随机打乱数组
random.shuffle(arr)print('原始数组:',arr)print('随机打乱数组:', random.shuffle(arr))

运行程序:

在这里插入图片描述
permutation()随机改变数组元素的排列,不改变原数组,产生新数组,示例程序如下:

from numpy import random
import numpy as nparr = 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 nparr1 = 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 nparr1 = 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 nparr1 = 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 nparr1 = 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 nparr1 = 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 nparr1 = 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 nparr1 = 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 nparr1 = 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 nparr = 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 nparr = 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 nparr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])newarr = np.add(arr1, arr2)print(newarr)

运行程序:

在这里插入图片描述

sum()数组值求和,可指定轴,示例程序如下:

import numpy as nparr1 = 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 nparr = np.array([1, 2, 3, 4, 5])newarr = np.cumsum(arr)print(newarr)

运行程序:

在这里插入图片描述

乘积

prod()计算乘积,示例程序如下:

import numpy as nparr = 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 nparr = np.array([1, 2, 3, 4, 5])newarr = np.cumprod(arr)print(newarr)

运行程序:

在这里插入图片描述

差异

diff()数组中连续元素作差,示例程序如下:

import numpy as nparr = 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 npnum1 = 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 npnum1 = 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 npx = 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 nparr = 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 npx = 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 npx = 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 npx = 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 nparr = np.array([1, 1, 1, 2, 3, 4, 5, 5, 6, 7])# unique()函数可以返回数组中唯一的元素
x = np.unique(arr)print(x)

运行程序:

在这里插入图片描述

union1d()方法查找两个数组的唯一值,示例程序如下:

import numpy as nparr1 = 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 nparr1 = 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 npset1 = 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 npset1 = 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

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好

以微博考研话题为例 思路步骤: 数据清洗: 使用pandas读取数据文件,并进行数据清洗和预处理,包括去除重复值、数据替换等。 数据处理实现: 数据处理的过程如下: 数据清洗主要包括去重和数据转换两个步骤…

Magisk + JustTrustMe 安装配置

操作步骤: 安装 Magisk 面具(手机root)在面具中刷入 LSPosed框架安装 JustTrustMe在LSPosed框架中配置并启动 JustTrustMe 一,Magisk面具 请根据自己手机的机型去root并安装面具,参考链接: https://www…

QAnything 1.4.1 中的文档解析

2024年初我们开源了QAnything,一个基于检索增强生成式应用(RAG)的本地知识库问答系统。对于本地知识库,QAnything支持多种格式的文档输入,允许用户上传包括PDF、图片、Word、PowerPoint、Excel、TXT,甚至音…

ISCC 2024|Misc

FunZip ISCC{xoMjL8NuYRRb} Number_is_the_key ISCC{Sanoyq6qGIPF} 精装四合一 四张图片尾部都存在多余数据,把多余数据分别提取出来保存成文件,未发现规律。根据提示,预计需要将四部分多余数据进行合并。提取四个部分前16个字节&#xff0…

Linux学习(十二)-- 用户管理与用户组管理、su与exit命令、sudo命令

目录 1. 用户管理 注: 以下命令需root用户执行 1.1 创建用户 1.2 删除用户 1.3 查看用户所属组 1.4 修改用户所属组 2.用户组管理 注: 以下命令需root用户执行 2.1 创建用户组 2.2 删除用户组 拓展: 3. su命令与exit命令 4. sudo…

Python高效数据分析的综合复习指南【时间处理与机器学习】

五、时间处理 一、时间戳-----Timestamp类型 方法1:使用Timestamp创建 pandas.Timestamp(ts_input, freqNone, tzNone, unitNone, yearNone, monthNone, dayNone, hourNone, minuteNone, secondNone, microsecondNone, tzinfoNone, offsetNone) import pandas a…

26计算机操作系统408考研-操作系统进程与线程篇章(三)

操作系统进程与线程篇章 ` 文章目录 操作系统进程与线程篇章前言一、进程概念进程控制块进程创建进程终止进程的阻塞和唤醒进程唤醒进程挂起和激活线程多线程线程实现与线程模型总结互斥和同步并发原理硬件同步信号量机制信号量的应用管程经典同步问题消息传递前言 一、进程概…

碌时刻必备!微信自动回复让你告别消息堆积

在忙碌的时候,我们往往会面临消息堆积如山的情况。无法及时回复消息不仅容易造成交流障碍,还可能错过重要的机会。 但是现在,有一个神奇的工具——个微管理系统,可以帮助我们轻松应对这个问题 ,实现微信自动回复。 首…

Mujava 工具的简单使用

首先下载openjava.jar和mujava.jar,以及自己手写一个mujava.config指向存放mujava的目录,并将这些文件放在mujava目录下。此时,基本的mujava环境就搭建好了。 分别创建src(存放源码文件)、classes(存放源码…

每日一题 求和

1.题目解析 求和_牛客题霸_牛客网 (nowcoder.com) 这一题,主要描述的就是求满足和为m的子序列,对与子序列的问题可以使用决策树。 2.思路分析 决策树如下图所示: 递归结束条件: 当当前和 sum 等于目标和 m 时,说明找到了一个满…

如何在华为手机上恢复已删除的视频[4种解决方案]

概括 在数字媒体时代,智能手机已成为我们的个人金库,存储以视频形式捕捉的珍贵记忆。然而,意外删除这些珍贵的文件可能会是一次令人心痛的经历。对于华为手机用户来说,由于删除或其他意外导致视频丢失尤其令人痛苦。但不用担心&a…

Python 拼图游戏

拼图游戏(puzzle)是一种常见的益智游戏,玩家通过拖动图块来正确拼接成完整的图片。 由一张原图,分割成图块,拼图块的大小将会根据行列数自动调整,然后随机打乱,玩家通过拖拽图块,最后复原原图。 &#x1f…

idea使用鼠标滚轮进行字体大小缩放

idea使用鼠标滚轮进行字体大小缩放 使用快捷键CtrlAltS进入到设置页面 在左上角搜索框输入“increase”,在左侧的Keymap中右击“Increase Fort Size”,点击“add mouse shortcut”,然后录入我们要设置的快捷键,比如我是点击ctrl鼠…

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

AtCoder Beginner Contest 354 (ABCDEFG题)视频讲解

2024年5月19日补充G题。 A - Exponential Plant Problem Statement Takahashi is growing a plant. Its height at the time of germination is 0 c m 0\,\mathrm{cm} 0cm. Considering the day of germination as day 0 0 0, its height increases by 2 i c m 2^i\,\mat…

看一遍就理解:MVCC原理详解

介绍 MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于实现数据库并发访问控制的机制。它允许多个用户同时读写同一数据项,从而提高了数据库在高并发环境下的性能和响应速度。以下是具体介绍: 基本…

Python代码注释的艺术与智慧

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:注释的必要性 二、注释的误区:不是越多越好 过度注释的问题…

服务器端口号怎么看?如何查看服务器端口号呢?有哪些需要注意的?

简单来说,端口号就是计算机与外界通讯交流的出口,每个端口都有不同的编号,也就是“端口号”。它们是唯一的,用于标识不同的服务和应用程序。通过端口号,我们可以知道哪些服务正在运行,以及如何与它们进行通…

【Linux系统编程】进程概念、进程排队、进程标识符、进程状态

目录 什么是进程? 浅谈进程排队 简述进程属性 进程属性之进程标识符 进程操作之进程创建 初识fork fork返回值 原理角度理解fork fork的应用 进程属性之进程状态 再谈进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 “R”(运行状…

洗地机哪个牌子最好用?2024洗地机排行榜

随着人们生活水平的提升,智能清洁家电已经成为日常生活中的必需品。如今的清洁家电市场上,洗地机、吸尘器和扫地机器人等设备各有其独特的功能和优势。洗地机结合了扫、拖、吸和自清洁等多种功能,不仅可以处理干湿垃圾,还能高效清…