1.Numpy使用场景
- 需要批量处理数据的时候
- 机器学习,人工智能这些需要进行海量数据运算处理的地方
- 写游戏里面的物体运行逻辑时,经常涉及到矩阵、向量运算
- 机器人模拟环境,背后的环境反馈信息,全是靠批量数据算出来的
- 任何需要做统计的时候(爬虫爬完了信息后) 画图表之前,要对数据做一轮批量处理
- Blah blah
2.Numpy安装【Windows】
- win + r 进入控制面板,输入cmd,回车进入终端
- 用pip安装
在终端输入:pip install numpy
回车即可进行安装
如果是Python3.x版本,用pip3 install numpy
进行安装
检查是否安装成功:
①在终端输入python
进入python环境
②输入import numpy
,没有错误提示,则表示安装成功。
3. Numpy array
Numpy array的一大优势就是速度快!
import numpy as np
arrayName = np.array([1,2,3]) #numpy的array和list的查询、更新、删除是相同的,
#不同的是array存储的数据是相同类型的,按照顺序存储在内存里,操作array的速度更快
print(arrayName, type(arrayName))
print("arrayName[1]=",arrayName[1])
arrayName[1] = 99 #通过下标修改
print("after modified, arrayName[1]=",arrayName[1])
运行结果:
4.数据维度
- 创建数据
np.array()
array.ndim:返回数据维度 - 添加数据
np.concatenate()
np.expand_dims() - 合并数据
np.concatenate()
np.vstack() #用于二维数据
np.hstack() - 观察形态
array.size array.shape
5.数据选取
- 单个选取
array[1]
array[1,2,3]
array[1][1]
array[[1,2]] - 切片划分
array[:3]
array[2:4, 1:3] - 条件筛选
array[array<0]
np.where(array, array < 0)
import numpy as np
b = np.array([
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,14,15]])
print("b[2]=", b[2]) #查看第二行所有数据(从0列开始)
print("b[2,1]=", b[2,1])#查看第二行第一列的值
#切片,格式:(起始坐标:结束坐标:间隔)左闭右开
print("b[0:4:2]=", b[0:4:2]) #第0行、2行
print("b[0:4:2, 0:2:1]=",b[0:4:2, 0:2:1] ) #第0行、2行,第0列、第2列,逗号表示行列的分隔符
#条件筛选array[ condition,]
# np.where(condition,x,y)当满足condition,将此处的值更改为x,否则改为y
condition = b > 6
print("condition =", condition)
print("b[condition]=", b[condition])
print("np.[condition,1]=", np.where(condition,1,b)) #满足条件的替换为1,不满足条件的不替换
运行结果:
6运算
加减乘除
±*/
np.dot()
数据统计分析
np.max() np.min() np.sum() np.prod() np.count()
np.std() np.mean() np.median()
特殊运算符号
np.argmax() np.argmin()
np.ceil() np.floor() np.clip()
import numpy as np
arrayA = np.array([122.2,156.3,723.1])
arrayB = np.array([12,16,1])
#加减乘除操作是直接对array的值进行操作,用列表的名字就可以操作
print("+",arrayA + 0.1)
print("-",arrayA - 0.1)
print("*",arrayA * 0.1)
print("/",arrayA / 0.1)
#点乘积
print("dot",arrayA.dot(arrayB))
print(arrayB)
#最值、求和
print("max", arrayA.max())
print("min", arrayA.min())
print("max_index", arrayA.argmax())
print("min_index", arrayA.argmin())
print("sum", arrayA.sum())
#大小
print("size", arrayA.size)
#平均值
print("mean",arrayA.mean())
#标准差
print("std", arrayA.std())
#上下限截取,低于下限的按照下限处理
print("arrayA.clip(100,200)", arrayA.clip(100,200))
运行结果:
7 改变数据形态
- 改变形态
array[np.newaxis, :]
array.reshape()
array.ravel(), array.flatten()
array.transpose() - 合并
np.column_stack(), np.row_stack()
np.vstack(), np.hstack(), np.stack()
np.concatenate() - 拆解
np.vsplit(), np.hsplit(), np.split()
import numpy as np
arrayA = np.array([1,2,3,4,5,6,7,8]).reshape([2,4])
#增加维度,np.expand_dims(array,axis ),
#原来的维度(2,4),扩展后:
# axis=0 ———>(1,2,4)
# axis=1 ———>(2,1,4)
# axis=2 ———>(2,4,1)
print(np.expand_dims(arrayA,axis =2).shape) #打印(2,4,1)
print(arrayA.shape)
#reshape
print(arrayA.reshape([2,1,4])) #[层数、行数,列数]
#转置
print(arrayA.shape)
print(arrayA.transpose().shape)
#分割,np.split(array, indices_or_sections, axis)
#indices_or_sections等于整数时,表示均分,是数组时,表示按照
print(np.split(arrayA, indices_or_sections =4 , axis=1)) #分割和维数拓展都是np下的函数
print(np.split(arrayA, indices_or_sections =[1,3] , axis=1)) #在 第一列右边、第三列右边切割
运行结果: