Numpy基础01(Jupyter基本用法/Ndarray创建与基本操作)

内容一: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的函数创建数组
  1. np.ones()
py 复制代码
1.用来创建数组元素均为1的数组
2.参数shape:用来标注数组的维数,dtype用来标注数组中元素的类型

arr = np.ones(shape=(3,))
arr = np.ones(shape=(3, 4), dtype=np.int8)
  1. np.zeros(shape,dtype=float,order='C)
py 复制代码
1.创建一个所有元素都为0的多维数组
2.参数说明:shape:形状,dtype=None:元素类型
  1. 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]])
  1. 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:元素类型
  1. 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)
  1. np.arange([start,]stop,[step,]dtype=None)
py 复制代码
1.创建一个数值范围的一维数组和Python中range功能类似
2.参数说明:
start:开始值(可选)stop:结束值(不包含)
step:步长(可选) dtype=None:元素类型
          
arr = np.arange(5, 20, 3)
  1. 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))
  1. np.random.randn(d0,d1,.,dn)
py 复制代码
1.创建一个服从标准正态分布的多维数组
2.标准正态分布又称为u分布,是以0为均数、以1为标准差的正态分布,记为N(0,1)标准正态分布,在0左
右出现的概率最大,越远离出现的概率越低。
3.参数:dn为n维度上的数值
  1. np.random.normal(loc=0.0,scale=1.0,size=None)
py 复制代码
1.创建一个服从正态分布的多维数组
2.参数说明:
loc=0.0:均值,对应着正态分布的中心
scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦
size=None:数组形状
  1. 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]])#可重复取
相关推荐
好开心啊没烦恼2 小时前
Python 数据分析:numpy,抽提,整数数组索引与基本索引扩展(元组传参)。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy·pandas
小高求学之路12 天前
MinIO centos 7 离线(内网) 一键部署安装
python·centos·numpy
NLxxxxX12 天前
爬虫获取数据:selenium的应用
开发语言·爬虫·python·selenium·测试工具·numpy·pandas
沛沛老爹14 天前
NumPy玩转数据科学
人工智能·python·机器学习·numpy·数据科学·多维数组·python库
weixin_4640780714 天前
Pycharm中Jupyter Notebook 插件常用快捷键
ide·jupyter·pycharm
逆羽飘扬14 天前
【JupyterLab集成】GPU性能监控可视化组件
人工智能·python·jupyter·gpu监控
点云SLAM15 天前
PyTorch 中Tensor常用数据结构(int, list, numpy array等)互相转换和实战示例
数据结构·人工智能·pytorch·算法·list·numpy·tensor
The丶Star15 天前
【解决CMD命令行下无法正常打开jupyter notebook的特殊办法(关闭防火墙版)】
ide·python·jupyter
不讲魔法讲道理15 天前
(202506最新)Jupyter Notebook显示目录的导航栏
ide·python·jupyter
搞IT的放牛娃16 天前
AI人工智能 —— Numpy
人工智能·numpy