热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jupyter入门之numpy基础语法

jupyter入门安装https:mirrors.tuna.tsinghua.edu.cnanacondaarchive‘>jupyter下载地址下载安装成功之

jupyter入门

安装

https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/‘>jupyter下载地址

下载安装成功之后打开

jupyter使用

点击base(root)后的小三角(open with Jupiter notebook)

默认打开8888端口

cell
每一个cell都可以放一段独立的代码, 独立运行
ctrl+enter

切换cell的编辑格式 在cell的选中状态下使用y/m
y:code格式
markdown模式

删除cell
x 删除选中cell
dd 删除选中cell

shift+tab查看api

tab自动补全

新建文件

numpy语法

import numpy as np
# 查看版本
np.__version__
# '1.14.3'

1. np.array

a1 = np.array([1,2,3,4,5])
>>> array([1,2,3,4,5])
a2 = np.array([1.0,2,3,4,5])
>>> array([1.,2.,3.,4.,5.])

2. 使用np的routines函数创建数组

  • np.ones(shape,)
n1 = np.ones(shape=5)
>>> array([1., 1., 1., 1., 1.])
n2 = np.ones(shape=(3,3))
>>> array([[1., 1., 1.],
           [1., 1., 1.],
           [1., 1., 1.]])
n3 = np.ones(shape=(3,3,2))
>>> array([[[1., 1.],
            [1., 1.],
            [1., 1.]],

           [[1., 1.],
            [1., 1.],
            [1., 1.]],

           [[1., 1.],
            [1., 1.],
            [1., 1.]]])
  • np.zeros
# 5行3列以0填充
n4 = np.zeros(shape=(5,3))
  • np.full
# 3行2列以6填充
n5 = np.full(shape=(3,2),fill_value=6)
  • np.eye
# 5行5列单位矩阵
np.eye(N=5)
  • np.linspace
# 0到10分为10等份 末尾不计
np.linspace(0,10,10,endpoint=False)
>>> array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
  • n.arange
# start,stop,step
np.arange(0,10,1)
>>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

3 正态分布

# 标准正太分布 方差为1,期望为0
np.random.randn(3,2)
# 普通正太分布 指定方差和期望值
np.random.normal(loc=1.75,scale=0.3,size=10)

ndarray属性

4个必记参数:

ndim:维度

shape:形状(各维度的长度)

size:总长度

dtype:元素类型

# 0-100随机 5行4列
n = np.random.randint(0,100,size=(5,4))

n.ndim
>>> 2
n.shape
>>> (5,4)
n.size
>>> 20
n.dtype
>>> dtype=('int32')

ndarray基本操作

1. 索引

n1[0]
# numpy特有 方便取值
n1[0,0]

2. 切片

# start:stop:step
n1[0:3]
# 取反
n1[::-1]
# 索引2,3行,之后取索引2,3列
n2[2:4,2:4]
# 索引0,1列
n2[:,:2]
# 主要看第几维在变
n3[:,:,:2]

3. 变形

# 变为1维数组
n2.reshape(36)
n2.reshape(36,)
# 1行36列
n2.reshape(1,36)
# 36行1列
n2.reshape(36,1)

4. 级联

  1. np.concatenate() 级联需要注意的点:
  2. 级联的参数是列表:一定要加中括号或小括号
  3. 维度必须相同
  4. 形状相符
  5. 【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向
  6. 可通过axis参数改变级联的方向
np.concatenate((n1,n2),axis=1)

h:horizontal 横向
v:vertical 纵向

np.hstack与np.vstack
水平级联与垂直级联,处理自己,进行维度的变更

5.切分

与级联类似,三个函数完成切分工作:

  • np.split
  • np.vsplit
  • np.hsplit
# 1.如果indices_or_sections设置为整数,必须保证在切割的维度上是可以被这个整数整除的
# 2.如果是1-D array,[m,n] 意味着按照如下方式切割 [0:m] [m:n] [n:]
result = np.split(n,indices_or_sectiOns=3,axis=1)

6.副本

# 浅拷贝 不会修改n1的值
cn = n1.copy()

ndarray聚合操作

求和 np.sum

标准差 np.std()

np.nan

最大最小值 np.max/np.min

其他运算

Function Name    NaN-safe Version    Description
np.sum    np.nansum    Compute sum of elements
np.prod    np.nanprod    Compute product of elements
np.mean    np.nanmean    Compute mean of elements
np.std    np.nanstd    Compute standard deviation
np.var    np.nanvar    Compute variance
np.min    np.nanmin    Find minimum value
np.max    np.nanmax    Find maximum value
np.argmin    np.nanargmin    Find index of minimum value
np.argmax    np.nanargmax    Find index of maximum value
np.median    np.nanmedian    Compute median of elements
np.percentile    np.nanpercentile    Compute rank-based statistics of elements
np.any    N/A    Evaluate whether any elements are true
np.all    N/A    Evaluate whether all elements are true
np.power 幂运算

ndarray的矩阵操作

1. 加减乘除

2. 矩阵积np.dot()

n3 = np.array([[1,2],[3,4]])
np.dot(n3,n3)
>>> array([[ 7, 10],
        [15, 22]])

3. 广播机制(重点)

【重要】ndarray广播机制的两条规则

  • 规则一:为缺失的维度补1
  • 规则二:假定缺失元素用已有值填充
# 计算一个数组中每个元素与平均值的差
n1 = np.random.randint(0,100,size=10)
n1-n1.mean()
# axis=1求每一行的平均值
n2.mean(axis=1).reshape((-1,1))
# 求每一行的每一个元素与该行的平均值的差
n2 - n2.mean(axis=1).reshape((-1,1))

1. 快速排序

np.sort()与ndarray.sort()都可以,但有区别:

  • np.sort()不改变输入
  • ndarray.sort()本地处理,不占用空间,但改变输入

2. 部分排序

np.partition(a,k)

有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。

  • 当k为正时,我们想要得到最小的k个数
  • 当k为负时,我们想要得到最大的k个数

推荐阅读
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文介绍了使用jQuery实现图片预加载和等比例缩放的方法,同时提供了演示和相关代码。该方法可以重置图片的宽度和高度,并使图片在水平和垂直方向上居中显示。 ... [详细]
author-avatar
宁波南诚装饰_886
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有