美文网首页
IPython与Numpy

IPython与Numpy

作者: 午夜丶小学徒 | 来源:发表于2018-11-10 16:52 被阅读0次

一、启动程序

执行以下命令:
  jupyter notebook
注意以下几点:
  - 打开地址为当前bash的目录,默认的根目录
  - 浏览器地址为http://localhost:8888/
  - 通过control -c 终止jupyter程序
几个基本操作:
  - 双击d:删除当前cell
  - 单击M:转为markdown文档
  - markdown文档下运行变为预览模式

二、IPython的帮助文档

1、使用help命令
  - help(len)
2、使用?和??
  - len?
  - len??
3、tab自动补全
4、通过shift+tab和shift+tab+tab
  - shift+tab:查找某函数需要赋的参数名
  - shift+tab+tab:查找某函数需要赋的参数名的具体描述以及示例

三、IPython的魔法命令

1、运行外部python文件
  - %run 外部python文件路径
  - 通过该python文件中的函数名直接调用
2、运行计时
  - %time statement(调用函数): 一般用于耗时长的代码段
  - %time statement(调用函数): 一般用于耗时短的代码段
  注意: 可以使用两个百分号来测试多行代码的平均运行时间
3、执行linux命令
  - 在linux指令之前加上!,即可在python当中执行linux指令
5、更多魔法指令
  - lsmagic

四、notebook的快捷键

- Enter:转入编辑模式
- Ctrl-Enter:运行本单元
- Shift-Enter:运行本单元,选中下个单元
- Alt-Enter:运行本单元,在下面插入一个单元并选中新插入的单元

Y :单元转入代码状态
M :单元转入markdown状态 

A :在上方插入新单元
B :在下方插入新单元

五、Numpy库

# 导入Numpy模块
  - import numpy as np
# 查看版本
  - np.__version__

六、ndarray的创建

# 使用np.array创建
  - np.array([1,2,3,4]) # 一维
  - np.array([[1,2,3,4],[5,6,7,8]]) # 二维
# 使用np的routines函数创建
  - np.ones(shape,dtype=None)  # 全为1
  - np.zeros(shape,dtype=None) # 全为0
  - np.full(shape, fill_value, dtype=None) # 按照fill_value填充
  - np.eye(shape,k=0,dtype=None) # 按照shape排列,k=0时,对应的对角线全为1,其他为0。从坐标(0,0)开始数,往右k值+1,往下k值-1
  - np.linespace(start,stop,num,retstep=False,endpoint=True) # 从start到stop,分为num份,retstep:等分的间距,endpoint:是否以stop结尾。
  - np.arange([start, ]stop, [step, ]dtype=None) # 类比于python的range
  - np.random.randint(0,150,size=(3,3)) # 随机取[0,150)之间的数,按照(3,3)排列
  - np.random.randn(2,3) # 生成一个2行3列的标准正态分布
  - np.random.normal(loc=0,scale=1,size=20) # 正态分布(loc:对应横坐标,scale:对应方差,size对应形状(shape))
  - np.random.random(size=None) # 随机生成(0,1)之间的数,size对应形状(shape)
  - np.random.randint(0,150,size=(3,3)) # 随机生成[0,150)的整数,3行3列

七、ndarray的属性

# 4个必记参数:ndim维度、shape形状、size总长度、dtype元素类型
# 例如:
  - l1 = [[1,2,3,4],[5,6,7,8]]
  - n1 = np.array(l1)
  - n1.ndim # 2
  - n1.shape # (2,4)
  - n1.size # 8
  - n1.dtype # dtype('int32')

八、ndarray的基本操作

1、索引(一维与列表一致,多维时同理)
  - l1 = [[1,2,3],[4,5,6],[7,8,9]]
  - n1 = np.array(l1)
  - n1[0] # [1,2,3]
  - n1[0][1] # 3
2、切片(一维与列表完全一致 多维时同理)
  - l2 = [[1,2,3],[4,5,6],[7,8,9]]
  - n2 = np.array(l1)
  - n2[0][0:2] # [1,2]
  - n2[0][::-1] # 反转[3,2,1]
3、变形(使用reshape函数,注意参数是一个tuple!)
  - n3 = np.arange(6) # array([0, 1, 2, 3, 4, 5])
  - np.reshape(n2,(2,3)) # array([[0, 1, 2],[3, 4, 5]])
4、级联
  - a1 = np.random.randint(0,100,size=(5,5))
  - a2 = np.random.randint(0,100,size=(5,5))
  - display(a1,a2)
  - np.concatenate()级联:
    - np.concatenate((a1,a2),axis=1)  # 水平级联(两组数据水平连接,成一行)
    - np.concatenate((a1,a2),axis=0) # 垂直级联(两组数据垂直连接,成一列)
  - np.hstack()水平级联:
    - np.hstack((a1,a2))
  - np.vstack()垂直级联:
    - np.vstack((a1,a2))
5、切分
  - a3 = np.arange(9)
  - np.split切分:
    - np.split(a3,3) # [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
    - np.split(a3,(3,4)) # [array([0, 1, 2]), array([3]), array([4, 5, 6, 7, 8])]
    - np.split(a3,(3,4,6)) # [array([0, 1, 2]), array([3]), array([4, 5]), array([6, 7, 8])]
  - np.hsplit水平切分:
    - np.hspilt(a3.5) # 每列取5个(按列切分)
  - np.vsplit垂直切分:
    - np.vsplit(a3,5) # 每行取5个(按行切分)
6、副本
    所有赋值运算不会为ndarray的任何元素创建副本。对赋值后的对象的操作也对原来的对象生效。
    可使用copy()函数创建副本

九、ndarray的集合操作

ndarray.png

十、ndarray的矩阵操作

1、基本矩阵操作
  # 算术运算符(+ - * /)
  # 矩阵积(np.dot)
2、广播机制
  规则一:为缺失的维度补一
  规则二:假定缺失元素用已有元素填充
  例:a = np.arange(3).reshape((3, 1)) b = np.arange(3) 求a+b
    - a = np.arange(3).reshape((3,1)) # array([[0],[1],[2]])
    - b = np.arange(3) # array([0, 1, 2])
    - a + b # array([[0, 1, 2],[1, 2, 3],[2, 3, 4]])

相关文章

网友评论

      本文标题:IPython与Numpy

      本文链接:https://www.haomeiwen.com/subject/kkbzxqtx.html