手把手一起学习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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt 在windows下显示中文

Qt在windows平台上显示中文,简直是一门玄学,经过测试,有如下发现: 1, 环境:Qt 5.15.2 vs2019 64位 win11系统 默认用Qt 创建的文件使用utf-8编码格式,此环境下 中文没有问题 ui->textE…

当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

一、写在开头 依稀记得多年以前的一场面试中,面试官从Java并发编程问到了锁,从锁问到了原子性,从原子性问到了Atomic类库(对着JUC包进行了刨根问底),从Atomic问到了CAS算法,紧接着又有追问到了…

用本地大模型(llama3)进行数据分类标记|LLM 用例

001|背景 这是我最新发布的导航站点 https://aiwith.me 这个站点由于第一版数据来源于第三方,只有站点基础数据,没有对数据进行分类,最近站点上线了,主体框架都搭建完成了,这才有空去对数据做分类. 目前的…

USART串口通信(stm32)

一、串口通信 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 STM32F103C8T6 USART资源: USART1、 USART2、 USART3 自带波特率发生器&…

数据结构:二叉树与树

一 树的基本概念: 1.树的形状: 2.树的定义: 树是一种非线性的数据结构,它是n(n > 0)个结点的有限集。当n 0时,称为空树。在任意一棵非空树中应满足: 2.1 有且仅有一个特定的称为根的结点。 2.2 当n …

【React】Ant Design 5.x版本table scroll滚动条样式自定义

新版里table的滚动条样式由:scrollbar-width、scrollbar-color接管,导致之前的伪类方式失效! 环境 antd: ^5.14.1react: ^18 解决方案: 若想延续伪类方式修改滚动条样式,可以在定义伪类样式文件里加入以下片段: .a…

什么是JDK21虚拟线程

JDK21虚拟线程 1. 来一段小故事2. 什么是虚拟线程3. 虚拟线程的几个关键特点4.细说关键特点1.为什么轻量级的1.传统线程运行时间2.虚拟线程运行时间3.对垃圾回收的影响 2.非绑定OS线程的魅力所在3.和传统相比为何易于使用4.阻塞优化有什么好处1.什么是阻塞优化2.JDK 21虚拟线程…

配置docker阿里云镜像地址

一、安装docker的步骤: 1.yum install -y yum-utils 2.yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo --配置阿里云仓库3.yum makecache fast4.yum install docker-ce -y5.docker version …

【LVGL_Linux安装NXP的Gui-Guider】

GUI Guider是恩智浦为LVGL开发了一个上位机GUI设计工具,可以通过拖放控件的方式设计LVGL GUI页面,加速GUI的设计。 虽然他只支持自家芯片,但是应用层我们可以直接拿来用作其他MCU上。 GUI-Guider 下载 NXP官网下载:链接&#xff1…

关于sklearn决策树手动指定节点进行剪枝调整的实现

一、决策树剪枝 决策树的剪枝方式有两种,预剪枝和后剪枝,后剪枝在python的sklearn方法中提供了CCP代价复杂度剪枝法(Cost Complexity Pruning)具体实现代码如下: # -*- coding: utf-8 -*- from sklearn.datasets imp…

AI模型抉择:开源VS闭源,谁主沉浮?

AI模型抉择:开源VS闭源,谁主沉浮? 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 &am…

软件设计师备考 | 案例专题之数据库设计 概念与例题

相关概念 关注上图中的两个部分: 概念结构设计 设计E-R图,也即实体-联系图。 工作步骤:选择局部应用、逐一设计分E-R图、E-R图合并。进行合并时,它们之间存在的冲突主要有以下3类: 属性冲突。同一属性可能会存在于…

如何通过OpenHarmony的音频模块实现录音变速功能?

简介 OpenAtom OpenHarmony(以下简称“OpenHarmony”)是由开放原子开源基金会孵化及运营的开源项目,是面向全场景、全连接、全智能时代的智能物联网操作系统。 多媒体子系统是OpenHarmony系统中的核心子系统,为系统提供了相机、…

MySQL中视图是什么,有什么作用

目录 一、视图的简介 1.1 什么是视图? 1.2 为什么使用视图? 1.3 视图有哪些规则与限制? 1.4 视图能否更新? 二、视图的创建 三、视图的作用 3.1 用视图简化复杂的联结 3.2 用视图格式化检索出的数据 3.3 用视图过滤数据…

redisson 使用fastJson2序列化

前因:一个项目:有人用redisTemplete存数据(使用了fastjson2),使用redisson取的时候就会报错。要让redisTemplete与redisson序列化一致 一、自定义序列化器 import com.alibaba.fastjson2.JSON; import com.alibaba.fa…

LeetCode //C - 119. Pascal‘s Triangle II

119. Pascal’s Triangle II Given an integer rowIndex, return the rowIndexth (0-indexed) row of the Pascal’s triangle. In Pascal’s triangle, each number is the sum of the two numbers directly above it as shown: Example 1: Input: rowIndex 3 Output: …

集中抄表电表是什么?

1.集中抄表电表:简述 集中抄表电表,又称为远程抄表系统,是一种现代化电力计量技术,为提升电力行业的经营效率和客户服务质量。它通过自动化的形式,取代了传统人工抄水表,完成了数据信息实时、精确、高效率…

C# 深拷贝和浅拷贝

文章目录 1.深拷贝2.浅拷贝3.拷贝类4.浅拷贝的实现5.深拷贝实现5.1 浅拷贝对象,对引用类型重新一个个赋值5.2 反射实现5.3 利用XML序列化和反序列化实现 1.深拷贝 拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。…

Python基于PyQt6制作GUI界面——按钮

示例对应的制作的 ui文件 界面如下所示。 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Form</class><widget class"QWidget" name"Form"><property name"geom…

C#使用开源操作库MiniExcel操作Excel

简介 MiniExcel 简单、高效避免 OOM 的.NET 处理 Excel 查、写、填充数据工具。 目前主流框架大多需要将数据全载入到内存方便操作&#xff0c;但这会导致内存消耗问题&#xff0c;MiniExcel 尝试以 Stream 角度写底层算法逻辑&#xff0c;能让原本 1000 多 MB 占用降低到几 …