手把手一起学习Python NumPy

news2024/11/25 13:35:57

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

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

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

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

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

相关文章

python-绘制五星红旗(非标准)

完整代码如下: #五星红旗(非标准版) from turtle import* import math from random import* tracer(0) penup() goto(-640,220) pendown() color(gold,gold) begin_fill() for i in range(5): fd(150) right(144) # 大五角星 penup(…

【Redis】 关于 Redis 哈希类型

文章目录 🍃前言🎋命令介绍🚩hset🚩hget🚩hexists🚩hdel🚩hkeys🚩hvals🚩hgetall🚩hmget🚩hlen🚩hsetnx🚩hincrby&#x1…

C++面向对象程序设计-北京大学-郭炜【课程笔记(十一)】

C面向对象程序设计-北京大学-郭炜【课程笔记(十一)】 1、string(重要知识点)1.2、string的赋值和链接1.3、比较string1.4、子串1.5、交换string1.6、寻找string中的字符1.7、删除string中的字符1.8、替换string中的字符1.9、在str…

java项目之图书管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 系统主要分为管理员角色和用…

宝塔PHP环境安装配置Xdebug

宝塔PHP环境安装配置Xdebug 安装XdebugVSCode安装插件编辑配置文件编辑配置运行调试断点快捷键其他 安装Xdebug 在宝塔中,找到PHP,打开管理页面,选择xdebug扩展,点击操作栏中的安装按钮(这里已经安装过了,…

JavaFX学习教程二

一、JavaFX 体系结构 JavaFX 场景图(Scene Graph)是构建 JavaFX 应用程序的起点,一种树状数据结构,用于排列(和分组)图形对象,以便于逻辑表示。 stage:舞台,操作系统窗口的 JavaFX 表示,是所有…

【Python】 掌握 Flask 请求数据获取的艺术

基本原理 在Web开发中,Flask是一个用Python编写的轻量级Web应用框架。它被广泛用于快速开发简单的Web应用。当用户通过浏览器或其他客户端向服务器发送请求时,Flask需要能够接收和解析这些请求中的数据。这些数据可以是GET请求的查询字符串、POST请求的…

方言和大语言模型

方言多样性及其对语言模型的影响 语言的演变是不可避免的,反映并推动了重大的社会变革和传统。语言接触往往会推动我们说话方式的创新,在美国全球文化的影响下,一种新的叙事正在其语言织锦中展开。 例如,在佛罗里达州南部&#…

springboot2.x3.x的A项目(作为sdk)集成到启动B项目调用2

一 概述 1.1 说明 本博客记录的案例,逻辑是: 项目A读取配置文件,并在service类的方法进行打印输出。项目A作为sdk被项目B进行依赖, 在项目B启动后,进行调用,并且在B进行参数的配置,能够覆盖…

java技术:spring-secrity实现认证、授权

目录 一、依赖 二、逻辑图 三、代码设计 1、WebSecurityConfigurerAdapter的实现类 2、设计登录接口 config配置: 1)UserDetailsService实现类重写: 2)书写登录实现类(调用authenticationManager、可以与后面的…

第十三期Big Demo Day聚焦Web3前沿,FaceN.AI项目路演揭幕创新技术

第十三期Big Demo Day活动即将于2024年5月28日在香港数码港的CyberArena隆重举行。FaceN.AI将亮相本次Big Demo Day,参与精彩的项目路演,展示其在跨链去中心化数字身份、On-chain to Off-chain数据应用、DIDFi探索以及元宇宙与AIGC人格化发展等领域的领先…

kubectl--的陈述式资源管理

目录 一 kubectl 1 查看版本信息 2 查看资源对象简写 3 查看集群信息 4 配置kubectl自动补全 5 node节点查看日志 二 基本信息查看 1 查看 master 节点状态 2 查看命令空间 3 查看命名空间为default的所有资源 4 创建命名空间app 5 删除命名空间app 6 指定pod控…

Magisk + JustTrustMe 安装配置

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

【全开源】二手车置换平台系统小程序(FastAdmin+ThinkPHP+Uniapp)

二手车置换平台系统 特色功能: 车辆评估:系统提供车辆状况、性能和价值的评估功能,通过拍照、上传图片等方式自动识别车辆信息并给出估价建议,帮助买家和卖家更准确地了解车辆价值。 在线交易:平台提供在线购车、售车…

Ubuntu22.04虚拟机设置静态IP

虚拟机设置静态IP 按下电脑的 “win”键,在弹出的输入框中输入“控制面板”,选中控制面板 1.选择 “网络和Internet” 2.选择 “网络和共享中心” 3.选择 “更改适配器设置” 4.选择 “VMnet8”,双击打开 5.选择 “属性” 找到 “Internet …

WebService的wsdl详解

webservice服务的wsdl内容详解,以及如何根据其内容编写调用代码 wsdl示例 展示一个webservice的wsdl,及调用这个接口的Axis客户端 wsdl This XML file does not appear to have any style information associated with it. The document tree is shown…

【数据分析面试】53.推送消息的分布情况(SQL)

题目 我们有两个表,一个是 notification_deliveries 表,另一个是包含 created 和购买 conversion dates 的 users 表。如果用户没有购买,那么 conversion_date 列为 NULL。 编写一个查询,以获取用户转换前的推送通知总数的分布情…

【前端】从手动部署到自动部署:前端项目进化之路

从手动部署到自动部署:前端项目进化之路 在前端开发的领域内,部署是一个不可忽视的环节。随着项目复杂度的增加和线上更新频率的提升,手动部署逐渐暴露出它的弊端。本文将带你从手动部署过渡到自动部署,完成前端项目进化的重要一…

Transformers实战02-BERT预训练模型微调

文章目录 简介BERT的基本原理分词模型输出 BERT预训练的方法BERT模型微调加载数据集DatasetDataLoader 训练模型构建模型tqdm使用训练模型模型预测 简介 BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer 模型的预…