在本节课中,我们将学习 NumPy,这是一个用于科学计算的 Python 库,它提供了一个强大的对象数组以及一系列处理数组的函数。
ndarray 介绍
NumPy 的核心功能之一是 ndarray 对象,它表示一个多维的数组。
ndarray 的属性
ndarray 对象有多个属性,如 shape(形状)、dtype(数据类型)、size(大小)等。
import numpy as np
a = np.array([1, 2, 3])
print(a.shape) # 输出: (3,)
print(a.dtype) # 输出: int64
print(a.size) # 输出: 3
ndarray 的类型
NumPy 支持比 Python 更多的数值类型,如 int32、int64、float32、float64 等。
基本操作
生成元素值为 0 和 1 的数组的方法
zeros_array = np.zeros((2, 3)) # 创建一个 2x3 的全 0 数组
ones_array = np.ones((3, 2)) # 创建一个 3x2 的全 1 数组
从现有数组生成
existing_array = np.array([1, 2, 3])
new_array = np.array(existing_array) # 从现有数组创建新数组
生成固定范围的数组
range_array = np.arange(10) # 创建一个包含 0 到 9 的数组
形状修改
original_array = np.arange(6)
reshaped_array = original_array.reshape((2, 3)) # 将数组重塑为 2x3 的形状
类型修改
int_array = np.array([1, 2, 3])
float_array = int_array.astype(np.float64) # 将数组的类型修改为 float64
数组去重
duplicated_array = np.array([1, 2, 2, 3, 3, 3])
unique_array = np.unique(duplicated_array) # 去重
数组运算
NumPy 支持数组间的加、减、乘、除等基本运算,以及更复杂的数学运算。
import numpy as np
# 创建两个数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 数组加法
print(a + b) # 输出: [5 7 9]
# 数组乘法(元素对元素)
print(a * b) # 输出: [ 4 10 18]
矩阵
NumPy 提供了 matrix 对象,专门用于矩阵运算。
import numpy as np
# 创建矩阵
A = np.matrix([[1, 2], [3, 4]])
B = np.matrix([[5, 6], [7, 8]])
# 矩阵乘法
print(A * B)
统计函数
NumPy 提供了一系列统计函数,如 mean(平均值)、std(标准差)、sum(求和)等。
import numpy as np
data = np.array([1, 2, 3, 4, 5])
# 平均值
print(np.mean(data)) # 输出: 3.0
# 标准差
print(np.std(data)) # 输出: 1.4142135623730951
比较和逻辑函数
NumPy 支持数组间的比较操作(如 >、< 等)和逻辑操作(如 logical_and、logical_or 等)。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([3, 2, 1])
# 比较
print(a > b) # 输出: [False False True]
# 逻辑与
print(np.logical_and(a > 1, b < 3)) # 输出: [False True False]
IO 操作
NumPy 支持从文件读取数组和将数组写入文件。
import numpy as np
# 保存数组到文件
data = np.array([1, 2, 3, 4, 5])
np.save('data.npy', data)
# 从文件加载数组
loaded_data = np.load('data.npy')
print(loaded_data) # 输出: [1 2 3 4 5]
通过本节课的学习,你应该对 Numpy 有了基本的了解,包括它的核心概念 ndarray、数组的创建和操作、以及如何进行数组的数学和统计分析。NumPy 是 Python 科学计算的基础,掌握它对于进行更高级的数据分析和机器学习任务至关重要。
最后
欢迎关注我的微信公众号, 一起交流学习!!!