内容一:Jupyter开发环境
-
IPython 是一个增强型的 Python 交互式解释器,提供了自动补全、命令历史、魔法命令等功能。它支持与操作系统命令交互、内联绘图和多语言扩展,并可与 Jupyter Notebook 集成,适用于数据分析和科学计算。IPython 还支持远程访问、包管理和插件扩展,是一个功能强大且灵活的开发工具。
-
Jupyter Notebook是IPython的开发环境。
1.1 Jupyter Notebook键盘输入模式
- 命令模式:键盘输入运行程序命令;
- 编辑模式:允许你往单元中键入代码或文本;
1.2 Jupyter Notebook的快捷键
- 编辑模式:
py
Tab:代码补全或缩进
Shift+Tab:提示
Shift-Enter:运行本单元,选中下一单元
Ctrl-Enter:运行本单元
Alt-Enter:运行本单元,在下面插入一单元
- 命令模式:
py
Shift+Enter:运行本单元,选中下个单元
Ctrl+Enter:运行本单元
Alt+Enter:运行本单元,在其下插入新单元
Y:单元转入代码状态
M:单元转入markdown状态
A:在上方插入新单元
B:在下方插入新单元
DD:删除选中的单元
1.3 IPython魔法命令
%run *.py
:使用此命令运行外部python文件(默认是当前目录,也可以使用绝对路径)
py
#注意:
1.当使用魔法命令去执行外部文件时,外部文件的函数可以在当前会话中使用
2.相当于import 外部模块
- 统计运行时间
%time statement
:适合对运行时间长的程序进行统计
%timeit statement
:适合对运行时间短的程序求其平均运行时间
%%timeit statement1 statement2 statement3
:可以使用两个百分号来测试多行代码的平均运行时间:
内容二: Numpy基础
NumPy (Numerical Python) 是Python的一个开源的数值计算库。可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。
2.1 创建ndarray
ndarray是Numpy中表示数组的重要类型,表示n维数组。
- 使用np.array()来创建数组
py
1.参数为列表类型(list())
2.ndarray默认的所有元素类型是相同的
3.如果传进来的列表中包含不同类型的,则按照优先级统一为一致的类型:优先级:str > float > int
4.ndarray的常见数据类型:
int: int8、uint8、int16、int32、int64
float: float16、float32、float64
str:字符串
py
arr = np.array([1, 2, 3, 4])
print(type(arr))#<class 'numpy.ndarray'>
print(arr)#[1 2 3 4]
print(arr.shape)#数组的形状,返回表示数组维数的元组:(4,)
- 使用np的函数创建数组
- np.ones()
py
1.用来创建数组元素均为1的数组
2.参数shape:用来标注数组的维数,dtype用来标注数组中元素的类型
arr = np.ones(shape=(3,))
arr = np.ones(shape=(3, 4), dtype=np.int8)
- np.zeros(shape,dtype=float,order='C)
py
1.创建一个所有元素都为0的多维数组
2.参数说明:shape:形状,dtype=None:元素类型
- np.full(shape,fill_value, dtype=None,order='C)
py
1.创建一个所有元素都为指定元素的多维数组
2.参数说明:shape:形状,fillvalue:填充值dtype=None:元素类型
arr = np.full((3, 4), 3)
>>>array([[3, 3, 3, 3],
[3, 3, 3, 3],
[3, 3, 3, 3]])
- np.eye(N,M=None,k=0, dtype=float)
py
1.对角线为1其他的位置为0的二维数组(单位矩阵)
2.参数说明:N:行数,M:列数,
默认为None,表示和行数一样(可以行和列不一致),k=0:向右偏移0个位置(k>0向右偏移, k<0 向左偏移),
dtype=None:元素类型
- np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
py
1.创建一个等差数列
2.参数说明:
start:开始值 stop:结束值
num=50:等差数列中默认有50个数
endpoint=True:是否包含结束值
retstep=False:是否返回等差值(步长)
dtype=None:元素类型
#等差数列:0,2,4,6....100
arr = np.linspace(0, 100, 51, retstep=True, dtype=int)
- np.arange([start,]stop,[step,]dtype=None)
py
1.创建一个数值范围的一维数组和Python中range功能类似
2.参数说明:
start:开始值(可选)stop:结束值(不包含)
step:步长(可选) dtype=None:元素类型
arr = np.arange(5, 20, 3)
- np.random.randint(low,high=None,size=None)
py
1.创建一个随机整数的多维数组
2.参数说明:
low:最小值 high=None:最大值
high=None时,生成的数值在[0,low)区间内
如果使用high这个值,则生成的数值在[low,high)区间
size=None:数组形状,默认只输出一个随机值
dtype=None:元素类型
arr = np.random.randint(3, 10, size=(3, 4))
- np.random.randn(d0,d1,.,dn)
py
1.创建一个服从标准正态分布的多维数组
2.标准正态分布又称为u分布,是以0为均数、以1为标准差的正态分布,记为N(0,1)标准正态分布,在0左
右出现的概率最大,越远离出现的概率越低。
3.参数:dn为n维度上的数值
- np.random.normal(loc=0.0,scale=1.0,size=None)
py
1.创建一个服从正态分布的多维数组
2.参数说明:
loc=0.0:均值,对应着正态分布的中心
scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦
size=None:数组形状
- np.random.random(size=None)
py
1.创建一个元素为0~1(左闭右开)的随机数的多维数组
2.参数说明:size=None:数组形状
2.2 ndarray的属性
- shape属性
py
np.shape
>>>(d0, d1, ..., dn)
几个数字就表示几维度,dn表示n维度上的数据
- ndim属性
py
np.ndim #直接返回维度
- size属性
py
np.size #直接返回数组元素的个数(d0*d1*...*dn)
- dtype属性
py
np.dtype #返回数据的类型
2.3 Numpy的基本操作
2.3.1 ndarray索引操作
- 一维数组:同一维列表大致相同
py
n = np.array([1, 2, 3, 4, 5])
n[0], n[-1]
#(1, 5)
- 多维数组
py
n = np.random.randint(0, 10, size=(3, 4, 5))
print(n)
# 访问最后一个元素并改为66
n[2,3,-1] = 66
print(n)
# 最后一行元素并改为66
n[2, 3, ] = 66
print(n)
# 最后一行元素并改为1,2,3,4,5
n[2, 3] = [1,2,3,4,5]
print(n)
2.3.2 ndarray切片操作
- 一维数组
py
n = np.array([1,2,3,4,5,6,7,8,9])
print(n[1: 5]) #包前不包后
print(n[::-1]) #反转
- 多维数组
py
n = np.random.randint(0, 10, size=(3, 4))
print(n)
#取连续多行:切片
print(n[0:2])
#取不连续的多行:中括号
print(n[[0, 2]])
print(n[[0, 2, 2]])#可重复取
#取连续多列:切片
print(n[:, 0:3]) #取1,2,3列
#取不连续的多列:中括号
print(n[:, [0, 2]]) #取1,3列
print(n[:, [0, 2, 2]])#可重复取