# Python入门,NumPy数组操作全攻略
嘿,小伙伴们!今天猿小哥要带大家一起探索Python中的一个超级神器——NumPy库。如果你正打算踏入数据科学或者机器学习的大门,
那NumPy绝对是你的必备武器。它专门用于处理大型多维数组和矩阵,还能进行各种数学运算,简直不要太强大!咱们废话不多说,
赶紧开始吧!
## 一、NumPy初体验
首先,咱们得安装NumPy库。如果你还没安装,可以运行`pip install numpy`来安装它。安装好后,咱们就可以导入它啦!
```python
import numpy as np
这里有个小贴士:np是NumPy的常用缩写,大家习惯上这么用,你也可以根据自己的喜好来命名哦!
二、创建数组
1. 从列表创建数组
最简单的创建数组的方法就是从列表转换。
arr = np.array([1, 2, 3, 4, 5])
print(arr)
输出结果会是:[1 2 3 4 5]。看,是不是很简单?
2. 创建特殊数组
NumPy还提供了很多创建特殊数组的方法,比如全零数组、全一数组、单位矩阵等。
zeros_arr = np.zeros((3, 4)) # 3行4列的全零数组
ones_arr = np.ones((2, 3)) # 2行3列的全一数组
eye_arr = np.eye(3) # 3x3的单位矩阵
print(zeros_arr)
print(ones_arr)
print(eye_arr)
3. 使用arange和linspace
arange类似于Python的range,而linspace用于在指定范围内生成均匀间隔的数字。
arange_arr = np.arange(0, 10, 2) # 从0到10,步长为2
linspace_arr = np.linspace(0, 1, 5) # 从0到1,生成5个均匀间隔的数字
print(arange_arr)
print(linspace_arr)
三、数组的基本操作
1. 数组索引与切片
NumPy数组的索引和切片操作跟Python列表很像。
arr = np.array([10, 20, 30, 40, 50])
print(arr[2]) # 访问第三个元素
print(arr[1:4]) # 切片操作,获取第二个到第四个元素
2. 数组的形状
通过.shape属性可以查看数组的形状。
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 输出:(2, 3) 表示2行3列
3. 数组的类型
NumPy数组有一个重要的属性.dtype,它表示数组中元素的数据类型。
arr = np.array([1, 2, 3.0])
print(arr.dtype) # 输出:float64,因为有一个浮点数,所以整个数组都变成了浮点数类型
四、数组的数学运算
1. 基本数学运算
NumPy数组支持各种基本数学运算,如加减乘除、幂运算等。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2) # 加法
print(arr1 - arr2) # 减法
print(arr1 * arr2) # 乘法
print(arr1 / arr2) # 除法
print(arr1 ** 2) # 幂运算,每个元素都平方
2. 数组的点积和矩阵乘法
点积(dot)和矩阵乘法(matmul或@)是数据处理中常用的运算。
arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
dot_product = np.dot(arr1, arr2) # 点积
print(dot_product)
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
matrix_product = np.matmul(mat1, mat2) # 矩阵乘法
# 或者用 @ 符号
# matrix_product = mat1 @ mat2
print(matrix_product)
五、数组的高级操作
1. 数组变形
通过.reshape方法可以改变数组的形状。
arr = np.array([1, 2, 3, 4, 6, 8, 9])
reshaped_arr = arr.reshape((3, 2)) # 变形为3行2列的数组
print(reshaped_arr)
2. 数组的拼接
NumPy提供了多种数组拼接的方法,如concatenate、stack等。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
concatenated_arr = np.concatenate((arr1, arr2)) # 水平拼接
print(concatenated_arr)
stacked_arr = np.stack((arr1, arr2), axis=0) # 垂直堆叠
print(stacked_arr)
3. 数组的分割
跟拼接相对应,NumPy也提供了数组分割的方法,如split。
arr = np.array([1, 2, 3, 4, 5, 6])
split_arr = np.split(arr, 3) # 分割成3个部分
print(split_arr)
六、实战演练
学了这么多,咱们来个实战演练吧!假设你有一组学生的成绩数据,你需要计算他们的平均分和最高分。
# 假设成绩数据
scores = np.array([85, 90, 78, 92, 88, 76, 95, 89])
# 计算平均分
average_score = np.mean(scores)
print(f"平均分:{average_score}")
# 计算最高分
max_score = np.max(scores)
print(f"最高分:{max_score}")
小伙伴们,看到这里,你是不是已经迫不及待想要自己动手试试了呢?NumPy的世界还远远不止这些,它还有非常多的高级功能和技巧等待你去探索。不过别着急,一步一个脚印,先把今天学到的知识消化掉吧!
总结
今天咱们一起学习了NumPy数组的基础操作,包括创建数组、数组的基本操作、数学运算以及高级操作。NumPy是Python数据科学领域的基础库,掌握它对于后续的学习至关重要。小伙伴们,记得动手敲代码,把每个知识点都实践一遍哦!这样才能真正掌握它们。
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问猿小哥哦。祝大家学习愉快,Python学习节节高!