【数据分析】numpy基础第四天

在第四天,我们只需要用一点代码案例来巩固一下以前的内容就OK了。

1. 前天教程与巩固

以下是前面三天的教程链接,以及用于巩固的小问题:

1.1. 第一天

  1. 如何创建Numpy数组
  2. 如何获取第3个元素
  3. 如何获取包含第1、2、3行的切片

1.2. 第二天

  1. 如何将一个有10个元素的一维数组,转变为10行1列的二维数组
  2. 如何在垂直或者水平上合并两个数组
  3. 如何筛选出数组arr中大于5的元素

1.3. 第三天

  1. 对下面创建的数组arr的所有元素乘以3
arr = np.array([[x for x in range(3)] for _ in range(3)])
  1. 计算数组arr最大值最小值
  2. 计算数组arr标准差均值

2. 问题解析

2.1. 第一天

1. 如何创建Numpy数组

示例代码

import numpy as np

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

代码解析
在这段代码中,我们首先导入了numpy包,并使用别名np引用它。然后,我们调用了np.array()函数并传入了一个列表[1, 2, 3],来创建一个numpy数组。

2. 如何获取第3个元素

示例代码

third_element = arr[2]

代码解析
这里我们通过索引访问numpy数组arr中的第三个元素。由于Python中的索引是从0开始的,所以索引2对应于第三个位置的元素。

3. 如何获取包含第1、2、3行的切片

鉴于多数编程语言的索引都是从0开始,与生活习惯有点不同,通常,没有显式声明是索引,就按照从1开始的规则来进行(前些天的教程也是这么写的,但那时候并没有声明,这里为一些感到二义性的读者说声抱歉)。

示例代码

arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
slice_1_2_3 = arr_2d[:3, :]

代码解析
在这段代码中,arr_2d是一个3x3的二维数组。我们通过arr_2d[:3, :]取出了前三行的所有数据。仅有冒号:表示选取这一维度上的全部内容。

2.2. 第二天

4. 如何将一个有10个元素的一维数组,转变为10行1列的二维数组

示例代码

arr_1d = np.arange(10)
arr_2d = arr_1d.reshape((10, 1))

代码解析
这里我们使用np.arange(10)创建了一个0到9的一维数组。然后,我们使用reshape((10, 1))将这个一维数组转换成了一个10行1列的二维数组。

5. 如何在垂直或者水平上合并两个数组

示例代码

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr_vstack = np.vstack((arr1, arr2))  # 垂直合并
arr_hstack = np.hstack((arr1, arr2))  # 水平合并

代码解析
在这里,np.vstack()用于垂直堆叠两个数组,而np.hstack()用于水平堆叠两个数组。

6. 如何筛选出数组arr中大于5的元素

示例代码

arr = np.array([1, 6, 3, 7, 9, 2, 5])
filtered_arr = arr[arr > 5]

代码解析
通过arr > 5,我们创建了一个数组,仅包含原数组中大于5的元素。

更深入一点解析
arr > 5,其实就是对arr中所有元素进行了一次比较运算,运算结果是布尔值(真假值),例如1 > 5的结果是False

arr的所有元素进行了比较运算后,会得到一个充满了TrueFalse布尔数组,比如下面的代码。

bool_arr = arr > 5 # bool_arr中的元素只有True和False

如果写arr[bool_arr],也就是把布尔数组传到中括号[]内,numpy就会根据bool_arr的内容对arr进行筛选,True则留下,False则去除。

arr[bool_arr] # 因为bool_arr = arr > 5,这里和直接写arr[arr > 5]一样

2.3. 第三天

7. 对下面创建的数组arr的所有元素乘以3

示例代码

arr = np.array([[x for x in range(3)] for _ in range(3)])
arr_multiplied = arr * 3

代码解析
这段代码演示了Numpy数组的标量乘法运算。arr * 3会将arr中的每个元素都乘以3。

8. 计算数组arr的最大值和最小值

示例代码

arr_max = arr.max()
arr_min = arr.min()

代码解析
max()min()函数分别找出numpy数组中的最大和最小值。

9. 计算数组arr的标准差和均值

示例代码

arr_std = arr.std()
arr_mean = arr.mean()

代码解析
std()计算的是数组的标准差,即数据分散度的一种度量。mean()计算的是数组的平均值。这两个函数为我们提供了数组分布的统计信息。

总结

本文我们复习巩固了前三天所学习的常用操作,在即将到来的第五天的教程中,我们会结合之前学习的基础知识,使用Numpy实现两个简单的算法:Min-Max归一化Z-Score标准化,这两种算法可以使我们的数据更加适合进行聚类算法(我们可以通过聚类算法,挖掘出数据中潜在的关系)模型的建立。