热门标签 | 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个数

推荐阅读
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
  • A1166 峰会区域安排问题(25分)PAT甲级 C++满分解析【图论】
    峰会是指国家元首或政府首脑之间的会议。合理安排峰会的休息区是一项复杂的工作,理想的情况是邀请的每位领导人都是彼此的直接朋友。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文探讨了在Python中多线程与多进程的性能差异,特别是在处理CPU密集型任务和I/O密集型任务时的表现。由于全局解释器锁(GIL)的存在,多线程在利用多核CPU方面表现不佳,而多进程则能有效利用多核资源。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 观察到在首次执行设置范围内的随机值分配时,结果倾向于靠近设定的最小值和最大值。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
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社区 版权所有