Numpy是一个开源的Python库,用于支持大型多维数组和矩阵运算,同时提供了大量的数学函数库。它是科学计算中非常重要的工具。Numpy在数据科学中非常重要,因为它提供了高效的数组处理能力和广泛的数学函数库,这对于处理大规模数据集、进行科学计算和机器学习等任务至关重要。
一、安装与设置
- 如何安装Numpy
pip install numpy
- 验证安装的方法
import numpy print(numpy.__version__)
二、Numpy数组基础
- 。创建数组: Numpy允许使用
array
函数从列表创建数组import numpy as np arr = np.array([1, 2, 3])
- 数组的属性:数组有多个属性,如
shape
(形状)、size
(大小)和dtype
(数据类型)。print(arr.shape) # 输出数组的形状 print(arr.size) # 输出数组中元素的总数 print(arr.dtype) # 输出数组元素的数据类型
- 索引与切片:可以通过索引访问数组中的元素,或使用切片来访问子数组。
print(arr[0]) # 输出第一个元素 print(arr[-1]) # 输出最后一个元素 print(arr[0:2]) # 输出前两个元素
三、数组操作
- 数组的形状改变:使用
reshape
方法可以改变数组的形状,而不改变其数据。import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) new_arr = arr.reshape(2, 3) print(new_arr)
- 数组的堆叠与分割:
- 堆叠:
stack
函数可以沿着新的轴加入一系列的数组。a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) c = np.stack((a, b)) print(c)
- 分割:
split
函数可以将一个数组分割成多个子数组。d = np.array([1, 2, 3, 4, 5, 6]) e, f = np.split(d, [3]) print(e) print(f)
这会将数组
d
在第三个元素处分割成两个子数组e
和f
。 - 数组的广播:广播是Numpy中的一个强大特性,它允许不同形状的数组进行数学运算。
g = np.array([1, 2, 3]) h = 2 print(g * h)
即使
h
不是数组,Numpy也会将其扩展到与g
相同的大小,并执行逐元素乘法。
四、数学运算
- 基本数学函数: Numpy提供了许多数学函数,如加法、减法、乘法和除法。
import numpy as np a = np.array([1, 2, 3]) print(np.add(a, 1)) # 对数组每个元素加1 print(np.subtract(a, 1)) # 对数组每个元素减1
- 线性代数运算: Numpy支持多种线性代数运算,如矩阵乘法和求解线性方程组。
b = np.array([[1, 2], [3, 4]]) c = np.array([[5, 6], [7, 8]]) print(np.dot(b, c)) # 矩阵乘法
- 统计方法: Numpy提供了一系列统计方法,用于计算平均值、中位数、标准差等。
d = np.array([1, 2, 3, 4, 5]) print(np.mean(d)) # 计算平均值 print(np.median(d)) # 计算中位数 print(np.std(d)) # 计算标准差
五、高级特性
- 掩码数组:掩码数组是Numpy中的一种特殊数组,它可以让你隐藏或“掩码”数组中的某些数据。
import numpy as np arr = np.array([1, 2, 3, -1, -2, -3]) mask = arr < 0 print(arr[mask]) # 只显示小于0的元素
- 结构化数组:结构化数组允许你定义一个数组,其中每个元素都可以是不同类型的字段。
structured_arr = np.array([(1, 'First', 0.5), (2, 'Second', 1.3)], dtype=[('id', 'i4'), ('position', 'a6'), ('value', 'f4')]) print(structured_arr[0]['position']) # 输出第一个元素的'position'字段
六、实例:使用Numpy解决问题
- 实际案例:假设你是数据分析师,需要分析一组股票价格的数据,找出价格最高的股票和计算所有股票价格的平均值。
- 1.数据准备: 首先,我们创建一个包含股票价格的Numpy数组。
import numpy as np stock_prices = np.array([120.5, 90.3, 45.8, 150.1, 180.4])
- 2.分析:找出价格最高的股票:
max_price = np.max(stock_prices) max_index = np.argmax(stock_prices) print(f"最高股票价格为:{max_price}, 位于索引:{max_index}")
计算所有股票价格的平均值:
average_price = np.mean(stock_prices) print(f"股票价格的平均值为:{average_price}")
运行上述代码,你将得到最高股票价格及其索引位置,以及所有股票价格的平均值。
-
当然,这只是一个非常简单的运用Numpy的小案例,想实现其他功能可以根据自己的需要运用Numpy库。