一.numpy是什么 ?
Numpy 是 Python 中专门用于高性能数值计算的库,其核心是一个功能强大的 n 维数组对象(ndarray),可以用来存储和操作大规模的数字矩阵或张量数据。
numpy库的作用:
核心功能:实现矩阵运算,为人工智能和数据分析提供基础支持
应用场景:
人工智能领域(包括计算机视觉、自然语言处理等)
数据分析岗位(从海量数据中挖掘有效规律)
金融行业(量化交易、投行分析等)
数据分析与人工智能的关系
包含关系:数据分析属于人工智能岗位的组成部分
数据特征:
需要处理的数据量级通常在几十万到上百万条
少量数据(如10-20条)不需要专门的分析工具
Numpy提高运行速度的优势:底层架构:核心计算部分用C语言实现python层仅负责调用接口
速度对比:比纯Python列表运算快数十倍执行效率超过Excel的数据处理
numpy底层与C语言的关系 :
技术架构:底层:C语言实现高性能计算上层:Python提供易用接口
设计优势:兼顾开发效率(Python)和运行效率(C),避免直接编写复杂的C代码
二.numpy库的安装
1.精确安装命令: 使用pip install numpy==1.23.5指定版本安装,双等号表示严格版本匹配
2.镜像加速: 安装时可添加国内镜像地址提高下载速度(如清华源、阿里云源等)
3.安装问题解决方法
- 错误处理:
- 当指定版本不存在时,pip会列出所有可用版本
- 可根据Python版本选择兼容的次新版本(如1.26.x不可用时选择1.25.x)
- 版本选择原则:
- Python 3.7建议安装1.21.x版本
- Python 3.8+可安装1.22+版本
- 主版本号(第一个数字)应保持一致
三. Nunpy函数详解
导入惯例: 使用import numpy as np作为标准导入方式
1.一维数组:
import numpy as np
list1 = [1,2,3,4,5] #python自带的列表数据类型
print(list1) #[1,2,3,4,5]
v = np.array(list1)
print(v) #[1 2 3 4 5]
2.二维数组[多个一维数组构成]
import numpy as np
list1 = [1,2,3,4,5]
m = np.array([list1,list1,list1])
print(m)
##[[1 2 3 4 5]
# [1 2 3 4 5]
#[1 2 3 4 5]]
3.三维数组[多个二维数组构成]
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)
可视化特性:在调试模式下查看ndarray对象时,数值越大显示颜色越红,越小则颜色越深,便于快速识别极值。
由于三维数组无法直接在计算机上表示,所以以z[0]的形式展现。
z[0]访问第一个二维矩阵切片,以此类推实现不同维度的数据提取,z[1]访问第二个二维矩阵切片
4.数组的基本属性
1.shape 查询数组的形状
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.shape)#(3, 3, 5)
输出结果(3,3,5)表示:3个二维矩阵,每个二维矩阵有3行,每行有5个元素
2.ndim 查询数组的维度
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.ndim)#3
3.size 查询数组中数据个数
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.size)#45
4.dtype 查询数组中的元素类型
import numpy as np
list1 = [1,2,3,4,5]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z.dtype)#int32
int8, int16, int32, int64: 表示不同长度的有符号整数。默认为int32
int8 的最小值为 0(二进制全为 0),最大值为 256(二进制全为 1),实际存储范围为 0 到 255。自然界中的亮度值(如 RGB 颜色)范围是 0 到 255,因此计算机视觉中常用 int8 存储颜色值。
int32 的存储范围为 0 到 2³²,适用于大数值存储;float32 和 float64 用于高精度浮点数(如保留多位小数)。
四.数组的升维
a.reshape(newshape, order='C')
a:要重新形状的数组。
newshape:一个整数或者元组,用于定义新的形状。
order:可选参数,指定元素在数组中的读取顺序。'C'意味着按行,'F'意味着按列,'A'意味着原顺序,'K'意味着元素在内存中的出现顺序。
import numpy as np
list1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]#
v = np.array(list1)
r1 = v.reshape(4,4)
print(r1)
print(r1.ndim)
r2 = v.reshape(1,-1,2)
print(r2)
print(r2.ndim)
r3 = r1.reshape(2,2,4)
print(r3)
print(r3.ndim)
resize:调整矩阵大小,可直接修改原始数据到相应的维度,返回值 None。reshape()方法则返回的是修改后的矩阵而原来的矩阵并不会改变
不返回计算结果,直接修改原始数组
import numpy as np
list1=[1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]
v=np.array(list1)
r = v.resize(4,4)#直接会修改原始数据到相应的维度
print(r)#None
print(v)#[[1 2 3 4]# [1 2 3 4]#[1 2 3 4]#[1 2 3 4]]
print(v.ndim)#2