数据挖掘技术与应用:第3次实验课教案

大数据
后台-插件-广告管理-内容页头部广告(手机)

实验3 Numpy数据值运算基础

一、实验目的

  1. 理解Numpy库在Python中的重要性和应用价值。
  2. 学习如何使用Numpy进行数组的创建、索引、切片和运算。
  3. 掌握Numpy中常用的数学运算函数,如平方根、指数、对数等。
  4. 学习Numpy中统计函数的使用,如均值、方差、标准差等。
  5. 了解Numpy库在数据分析、科学计算和机器学习领域的广泛应用。

二、实验工具

  1. Python编程语言
  2. Numpy库
  3. 一个集成开发环境(如Anaconda、Jupyter Notebook或其他Python IDE)

三、实验内容

  1. 介绍Numpy库:了解Numpy库的用途和优势,以及其在数据分析和科学计算中的重要性。
  2. Numpy数组的创建:学习如何使用Numpy创建多维数组(ndarray)以及数组的基本属性。
  3. 数组元素的访问:学习如何索引和切片数组,以及如何修改和获取数组中的元素。
  4. 数学运算:掌握Numpy库中常用的数学函数,如加减乘除、三角函数、指数、对数等。
  5. 统计函数:学习Numpy中的统计函数,如均值、方差、标准差等。
  6. 数组操作:了解Numpy库中用于数组操作的函数,如改变数组形状、合并数组、分割数组等。
  7. 数据处理实践:进行一些简单的数据处理实践,如对数据进行筛选、排序、汇总等操作。
  8. Numpy在线性代数计算中的应用。

四、实验步骤设计

  1. Numpy数组的创建:了解如何使用Numpy创建多维数组(ndarray)以及数组的基本属性。
  2. 数组操作:学习如何查询数组的形状、尺寸和数据类型,以及对数组进行重新排列和调整
  3. 数学运算:掌握Numpy库中常用的数学运算, 如加减乘除、三角函数、指数、对数等。
  4. 统计函数:学习Numpy中的统计函数,如均值、方差、标准差等。
  5. 数组切片与索引:练习使用Numpy库进行数组的切片和索引操作。
  6. 数据处理实践:通过实际数据处理的例子进行操作,如对数据进行筛选、排序、汇总等。

附具体步骤:

1、创建一维数组:

import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])

print(arr1)

# 输出:[1 2 3 4 5]

2、创建二维数组:

import numpy as np

arr2 = np.array([[1, 2, 3], [4, 5, 6]])

print(arr2)

# 输出:

# [[1 2 3]

# [4 5 6]]

3、数组的属性

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

print("数组的形状:", arr.shape)

print("数组的数据类型:", arr.dtype)

print("数组的维度:", arr.ndim)Copy

结果:

数组的形状: (2, 3)

数组的数据类型: int64

数组的维度: 2

4、数据类型转换

import numpy as np

arr = np.array([1, 2, 3])

print("原始数组的数据类型:", arr.dtype)

arr = arr.astype(float)

print("转换后的数组的数据类型:", arr.dtype)

结果:原始数组的数据类型: int64

转换后的数组的数据类型: float64

在这两个示例中,我们展示了如何获取数组的属性(形状、数据类型、维度)以及如何进行数据类型的转换。这些是Numpy中常用的操作,对于理解数组的结构和进行数据处理非常重要。

5、生成指定范围内的随机整数:

import numpy as np # 生成5个范围在1到10之间的随机整数

random_integers = np.random.randint(1, 10, 5)

print(random_integers)

结果可能类似于:

[2 6 9 3 1]

6、生成服从正态分布的随机数:

import numpy as np

import matplotlib.pyplot as plt

# 生成1000个服从正态分布的随机数

mu, sigma = 0, 0.1

# 均值和标准差

s = np.random.normal(mu, sigma, 1000)

# 绘制直方图

count, bins, ignored = plt.hist(s, 30, density=True)

plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *

np.exp( - (bins - mu)**2 / (2 * sigma**2) ),

linewidth=2, color='r')

plt.show()

7 、将一维数组变换为二维数组:

import numpy as np

# 创建一个一维数组

arr1 = np.array([1, 2, 3, 4, 5, 6])

# 使用reshape方法将一维数组变换为二维数组

arr2 = arr1.reshape(2, 3)

print(arr2)

结果:

[[1 2 3]

[4 5 6]]

8、将二维数组扁平化为一维数组:

import numpy as np

# 创建一个二维数组

arr1 = np.array([[1, 2, 3], [4, 5, 6]])

# 使用ravel方法将二维数组扁平化为一维数组

arr2 = arr1.ravel()

print(arr2)

结果:

[1 2 3 4 5 6]

9、数组索引:

import numpy as np

# 创建一个一维数组

arr = np.array([1, 2, 3, 4, 5])

# 获取第三个元素,索引从0开始

print(arr[2])

结果:

3

10、数组切片:

import numpy as np

# 创建一个一维数组

arr = np.array([1, 2, 3, 4, 5])

# 对数组进行切片操作

print(arr[1:4])

结果:[2 3 4]

11、数组相加:

import numpy as np

# 创建两个数组

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

# 数组相加

result = arr1 + arr2print(result)

结果:

[5 7 9]

12、数组乘法:

import numpy as np

# 创建两个数组

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

# 数组相乘

result = arr1 * arr2

print(result)

结果:

[ 4 10 18]

13、求数组的平方根:

import numpy as np

# 创建一个数组

arr = np.array([4, 9, 16])

# 计算数组的平方根

result = np.sqrt(arr)

print(result)

结果:

[2. 3. 4.]

14、计算数组的均值:

import numpy as np

# 创建一个数组

arr = np.array([1, 2, 3, 4, 5])

# 计算数组的均值

mean_value = np.mean(arr)print("均值:", mean_value)

结果:

均值: 3.0

15、计算数组的方差:

import numpy as np

# 创建一个数组

arr = np.array([1, 2, 3, 4, 5])

# 计算数组的方差

variance = np.var(arr)

print("方差:", variance)

结果:

方差: 2.0

16、计算数组的中位数:

import numpy as np

# 创建一个数组

arr = np.array([1, 3, 5, 7, 9])

# 计算数组的中位数

median_value = np.median(arr)

print("中位数:", median_value)

结果:

中位数: 5.0

17、矩阵乘法:

import numpy as np

# 创建两个矩阵

A = np.array([[1, 2], [3, 4]])

B = np.array([[5, 6], [7, 8]])

# 矩阵乘法

C = np.dot(A, B)

print(C)

结果:

[[19 22]

[43 50]]

18、求矩阵的逆:

import numpy as np

# 创建一个矩阵

A = np.array([[1, 2], [3, 4]])

# 求矩阵的逆

A_inv = np.linalg.inv(A)

print(A_inv)

结果:

[[-2. 1. ]

[ 1.5 -0.5]]

19、计算特征值和特征向量:

import numpy as np

# 创建一个矩阵

A = np.array([[1, 2], [2, 1]])

# 计算特征值和特征向量

eigenvalues, eigenvectors = np.linalg.eig(A)

print("特征值:", eigenvalues)

print("特征向量:", eigenvectors)

结果:

特征值: [ 3. -1.]

特征向量: [[ 0.70710678 -0.70710678]

[ 0.70710678 0.70710678]]

20、解线性方程组:

import numpy as np

# 定义一个线性方程组的系数矩阵和常数向量

A = np.array([[2, 1], [1, 1]])

b = np.array([1, 1])

# 求解线性方程组

x = np.linalg.solve(A, b)

print(x)

结果:

[0. 1.]

21、计算矩阵的奇异值分解:

import numpy as np

# 创建一个矩阵

A = np.array([[1, 2], [2, 3], [3, 4]])

# 计算奇异值分解

U, S, V = np.linalg.svd(A)print("U:", U)print("S:", S)print("V:", V)

22、求矩阵的行列式

import numpy as np

# 创建一个矩阵

A = np.array([[1, 2], [3, 4]])

# 求矩阵的行列式

determinant = np.linalg.det(A)

print("矩阵的行列式:", determinant)

结果:

矩阵的行列式: -2.000000000000000

六、主要概念

  1. Numpy库的介绍和安装
  2. 创建Numpy数组(ndarray)
  3. 数组的属性和基本操作
  4. 数学运算和统计函数
  5. 数组的切片和索引
  6. 数据处理与数据分析
  7. Numpy库在线性代数中的应用

七、主要公式

这一节不涉及公式

八、主要算法

九、学后反思

  1. 是否对Numpy库的介绍和安装存在任何困难,以及是否需要更多的指导和说明。
  2. 对Numpy数组的创建、属性、操作和数学函数运算是否掌握得到,是否需要更多的练习和案例分析讲解。
  3. 对数组的切片、索引和数据处理是否有疑惑,是否需要更多的练习和实践机会。
后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。