Numpy基础知识
一、NumPy基础概念
🔍 什么是NumPy?
-
核心功能:处理任意维度的数组与矩阵,比Python原生数据结构更高效。
-
优势:简化复杂计算,支持矢量化运算,底层C实现速度快。
二、数组的创建与属性
👉 1. 数组创建方法
-
基础创建:
# 一维数组
arr1 = np.array([1, 2, 3])
# 多维数组
arr2 = np.array([[1, 2], [3, 4]])
-
特殊数组生成:
-
全零数组:
np.zeros((2,3))
-
全一数组:
np.ones((3,3))
-
等差数组:
np.arange(0, 10, 2)
-
等分数组:
np.linspace(0, 10, 5)
-
👉 2. 数组常用属性
属性 | 说明 | 示例 |
---|---|---|
ndim | 数组维度 | arr.ndim → 2 |
shape | 形状(行数, 列数) | arr.shape → (2,3) |
size | 元素总数 | arr.size → 6 |
dtype | 数据类型 | arr.dtype → int64 |
三、数组变形与数据类型
🎯 1. 改变数组形状
-
reshape()
:不复制数据,仅调整视图(需元素总数匹配): -
arr = np.arange(6) arr_2d = arr.reshape(2, 3) # 转为2行3列
-
resize()
:直接修改原数组形状,不足时填充0。
🎯 2. 修改数据类型
使用astype()
转换类型:
arr_float = arr.astype(np.float64) # 转为浮点型
四、索引与切片
🔍 1. 一维数组
-
索引从0开始,支持负数索引:
arr = np.array([10, 20, 30, 40])
print(arr[1]) # 20
print(arr[-1]) # 40
切片语法:start:end:step
arr[1:3] # [20, 30]
🔍 2. 多维数组
-
逗号分隔索引,按维度访问:
arr_2d = np.array([[1,2], [3,4]])
print(arr_2d[1, 0]) # 3(第2行第1列)
切片支持多维度:
arr_2d[:, 1] # 所有行的第2列 → [2, 4]
五、副本与视图
⚠️ 关键区别
-
视图(浅复制):共享原始数据内存,修改视图会影响原数组。
view = arr.view()
view[0] = 100 # 原数组同步修改
副本(深复制):完全独立的新数组,修改不影响原数据。
copy = arr.copy()
copy[0] = 200 # 原数组不变
六、轴(Axis)的概念
📌 核心规则
-
0轴:行方向(纵向操作,如按列求和)
-
1轴:列方向(横向操作,如按行求均值)
-
三维数组:0轴(层)、1轴(行)、2轴(列)
示例:
arr = np.array([[1,2], [3,4]])
np.sum(arr, axis=0) # 按列求和 → [4, 6]
np.sum(arr, axis=1) # 按行求和 → [3, 7]
七、常用数组操作
🚀 1. 添加元素
-
np.append()
:末尾追加元素(生成新数组)
new_arr = np.append(arr, [5,6])
np.insert()
:指定位置插入元素
new_arr = np.insert(arr, 1, 99) # 在索引1处插入99
🚀 2. 删除元素
-
np.delete()
:按索引删除
new_arr = np.delete(arr, [0,2]) # 删除索引0和2的元素
🚀 3. 去重操作
-
np.unique()
:返回唯一值并排序
unique_arr = np.unique([2,1,2,3]) # [1,2,3]
👏觉得文章对自己有用的宝子可以收藏文章并给小编点个赞!
👏想了解更多统计学、数据分析、数据开发、机器学习算法、深度学习等有关知识的宝子们,可以关注小编,希望以后我们一起成长!