Numpy能处理数据吗?
摘要:NumPy 从基础到高级完整讲解 NumPy(Numerical Python)是Python科学计算的核心库,其核心是多维数组(ndarray),提供了高效的数值计算、向量化操作、广播机制等功能,相比Python原生列表,NumPy数组在
NumPy 从基础到高级完整讲解
NumPy(Numerical Python)是Python科学计算的核心库,其核心是多维数组(ndarray),提供了高效的数值计算、向量化操作、广播机制等功能,相比Python原生列表,NumPy数组在内存占用、计算速度上有数量级的提升。
本文将分「基础篇」「进阶篇」「高级篇」,结合可运行代码、数据示例和核心结论,全面讲解NumPy的使用。
一、基础篇:核心概念与基本操作
1.1 安装与导入
首先确保安装NumPy,然后导入(约定俗成用np作为别名):
# 安装(终端执行)
# pip install numpy
# 导入
import numpy as np
1.2 核心数据结构:ndarray
ndarray是NumPy的核心,是同质的多维数组(所有元素类型相同),以下是常见创建方式:
(1)从Python列表/元组创建
# 一维数组
arr1d = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1d)
# 输出:一维数组: [1 2 3 4 5]
# 二维数组(矩阵)
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:\n", arr2d)
# 指定数据类型(dtype)
arr_float = np.array([1, 2, 3], dtype=np.float64)
print("浮点型数组:", arr_float, "dtype:", arr_float.dtype)
数据说明:
一维数组arr1d:[1,2,3,4,5](int32默认)
二维数组arr2d:3行3列的矩阵
arr_float:强制转为float64类型
结论:
np.array()是创建数组的基础方法,支持嵌套列表创建多维数组;
dtype可指定元素类型(int8/16/32/64、float16/32/64、bool等),避免类型不一致导致的计算问题。
(2)内置函数创建数组(常用)
# 全0数组
zeros_arr = np.zeros((2, 3)) # 2行3列
print("全0数组:\n", zeros_arr)
# 全1数组
ones_arr = np.ones((3, 2), dtype=np.int32) # 3行2列,int32类型
print("全1数组:\n", ones_arr)
# 自定义填充值
full_arr = np.full((2, 2), 99) # 2行2列,填充99
print("自定义填充数组:\n", full_arr)
# 等差数列(arange:start, stop, step)
arange_arr = np.arange(0, 10, 2) # 0到10(不含),步长2
print("等差数列:", arange_arr)
# 等间隔数列(linspace:start, stop, num)
linspace_arr = np.linspace(0, 1, 5) # 0到1,生成5个等间隔数
print("等间隔数列:", linspace_arr)
# 随机数数组
np.random.seed(42) # 固定随机种子,保证结果可复现
rand_arr = np.random.rand(2, 3) # 2行3列,0-1均匀分布随机数
randn_arr = np.random.randn(2, 3) # 2行3列,标准正态分布(均值0,方差1)
randint_arr = np.random.randint(0, 10, (2, 3)) # 0-10(不含)整数随机数
print("均匀分布随机数:\n", rand_arr)
print("标准正态分布随机数:\n", randn_arr)
print("整数随机数:\n", randint_arr)
# 单位矩阵(对角线为1,其余为0)
eye_arr = np.eye(3) # 3阶单位矩阵
print("单位矩阵:\n", eye_arr)
数据说明:
内置函数创建的数组维度由参数shape(元组)指定,如(2,3)表示2行3列;
随机数数组通过seed固定种子,确保每次运行结果一致。
结论:
内置函数比手动创建列表更高效,尤其适合大规模数组;
arange侧重“步长”,linspace侧重“点数”,按需选择;
随机数生成需注意种子(seed),保证实验可复现。
