手把手一起学习Python NumPy

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复合浮点数
mtimedelta
Mdatetime
O对象
S字符串
Uunicode字符串
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

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

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

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲁棒最小二乘支持向量机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值