在之前的生信分析方向如何系统入门python3推文最后,我们提到了python有很多好用的模块和加载包,也正因为这些,所以才使得python能够灵活多场景处理分析。

整合最近学习的一些内容,借以 Jay Alammar的博客,就来介绍一下其中一个基础数据处理包 NumPy吧。

今天的推送大纲如下:

不难发现,Numpy主要用于数据分析,整体的模式有点类似于小型的R,在读取和处理数据上略占优势,但是R的强大在于其统计分析和可视化。融会贯通,哪哪都好。

一开始使用 Numpy只是想简单使用它的内置函数,比如判断一下序列长度最大值呀,或者计算一下样本数据的均值等。收集资料发现其中还有不少有意思的东西。

基本用法

既然是一个包那就要载入:

import numpy as np

构建基本数据结构:

  1. 数组

    # 构建数组np.array([1,2,3])np.ones(3)np.random.random(3)

  2. 矩阵
    与数组的构建写法相同,但是不同的是矩阵可以包含二维关系,同样包含ones()、zeros() 和 random.random() 快速方法,即

    # 构建矩阵

    np.array([[1,2],[3,4]])np.zeros((3,2))

  3. 更多维度
    矩阵和向量的任意维度结构

    ndarraynp.array([[1,2],[3,4]],[[5,6],[7,8]])

运算

  1. 基本运算
    数组运算的规则是一一对应进行计算,例如加减乘除。

    我们在之前函数中介绍过一种函数,可以快速对列表中的每一个元素进行计算,而在 Numpy中只需对 data * 1.6即可。

    矩阵的运算有点类似上面的方式,称为 broadcasting,若不满足相同的维度,则会自动补齐进行计算。

  2. 点乘
    除了上述的广播式计算方法外,NumPy为每个矩阵提供一个dot()方法,即分别进行计算,示例如下:

    具体的计算方法如下:

  3. 索引
    类似于列表的切片,对于Numpy数组的任意位置进行索引:

    矩阵的索引使用二维的方式展示,以 ,分割对应横纵轴:

  4. 数据聚合
    在这一部分,数组和矩阵便可以快速计算其最大值data.max()、最小值data.max()、均值data.min()、标准差data.std()、求和data.sum()等。

    值得一提的是,在矩阵聚合中,有一个参数 axis支持跨行或者跨列聚合:在图中可以形象的理解为 axis=0为竖向计算, axis=1 为横向计算,即最外面的括号代表着 axis=0,依次往里的括号对应的 axis 的计数就依次加 1。

  5. 转置
    有时候为了可视化的需求,我们会在excel或者R语言中使用转置的功能。当然python不能落下,使用也相当简单data.T

    而在更高级的场景下,你可能需要对矩阵转变为特定的维度,这样你就需要使用 data.reshape()来实现了。

是不是越来越像excel了,关于二维矩阵的介绍,还有一个更有用的包 pandas 值得学习

高阶用法

除了向量和举证支持运算外,公式的使用也是 NumPy 成为宠儿的原因之一。例如在解决回归问题中监督式机器学习的核心公式:均方差公式

在 Nmupy中体现为,值得注意的是对于 predictions 和 labels可以任意多个值,我们可以根据图形依次追踪计算:

1

2

3

4

最终可以获得的预测的误差值和模型评分。

更多应用

时间序列和音乐

例如以下的一段音频文件(一维数组),存入Numpy,那么就可以通过切片进行音频分割和定位。

CD 质量的音频每秒包含 44,100 个样本,每个样本是-65535 到 65536 之间的整数。这意味着如果你有一个 10 秒的 CD 质量 WAVE 文件,你可以将它加载到长度为 10 * 44,100 = 441,000 的 NumPy 数组中。

图像

图像是尺寸(高度 x 宽度)的像素矩阵。

举个例子:

如果是黑白(即灰度),那么就可以以上图的形式展示,如果是彩色(RGB)三个数字代表红绿蓝,因此需要我们在之前提到的ndarray

语言

语言的处理就相对于复杂,这里就简单地过一下的大概的原理,首先需要构建一个数据集:

然后根据词云(单词或单词的一部分)划分获得token数组:

然后我们替换其中的每一个词,使用我们自己构建的数据集:

但是这些ID并未对模型提供太多信息,需要使用50维word2vec进行替换(So before feeding a sequence of words to a model, the tokens/words need to be replaced with their embeddings (50 dimension word2vec embedding in this case):)

然后你就得到了一个维度为 [embedding_dimension x sequence_length]的数组。

出于性能原因,深度学习模型倾向于保留批大小的第一维(因为如果并行训练多个示例,模型训练速度会加快)。在这种情况下,reshape() 变得非常有用。如像 BERT 这样的模型期望的输入形式是:[batch_size,sequence_length,embedding_size]。

一点注意

Numpy库都要准备放弃支持python2(最后一个版本LTS 版支持到2019年12月31日),快来一起加入python3的学习吧~

猜你喜欢

三剑客 PyCharm使用  | 编程基础与规范代码 | 列表使用

元组拆包是个啥?| 字典与FASTA文件序列抽提

如何判断序列是否跨过剪切位点 | python3 脚本小实战

爬虫小测试 | 函数入门

如何优雅的数月饼 |为什么要使用函数

NCBI的文献搜索与影响因子和分区

类与对象

号外:生信技能树全国巡讲11月在福州和上海,点击了解报名哈:(福州、上海见!)全国巡讲第19-20站(生信入门课加量不加价)

python3.7对应的numpy版本_图解NumPy包一文就够了相关推荐

  1. python 函数作用于矩阵_图解NumPy:常用函数的内在机制

    原标题:图解NumPy:常用函数的内在机制 来源: 机器之心 支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功 ...

  2. numpy 随机数_数据分析numpy基础看着一篇就够了

    1,Numpy基础数据结构 2,Numpy通用函数 3,Numpy索引及切片 4,Numpy随机数 5,Numpy数据的输入输出 1,Numpy基础数据结构 NumPy数组是一个多维数组对象,称为nd ...

  3. python3.7装anaconda什么版本_【对话系统】配置python+dlatk+theano不装anaconda的血泪史...

    装完环境有一阵了,现在回忆起来还是很崩溃(. 我知道theano已经凉了-- dlatk:Differential Language Analysis ToolKit,是一个端到端的人类文本分析软件包 ...

  4. python计算图解_图解NumPy,看这一篇就够了!

    晓查 编译整理 量子位 报道 | 公众号 QbitAI NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.然而对初学者来说,NumPy的大量运算方法非常难记. 最近,国 ...

  5. tensorflow对应的numpy版本_版本更新 | TensorFlow 2.4.0 候选版本发布

    主要功能改进 tf.distribution 通过 tf.distribution.experimental.ParameterServerStrategy API 引入了对 Keras 模型异步训练 ...

  6. ubuntu python3.7修改默认pip版本_详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本 安装python3后使用pip和pip3的区别...

    Python3.4已经默认安装了pip为什么执行不了我的谁说过,念念不忘就该放.但我也记得你说过,爱一个人不是一天两天的事. 如何升级到python3版本并且安装pip3 确保你的系统上已经安装好了 ...

  7. python引用numpy出错_引用numpy出错详解及解决方法

    numpy出错 解决方案 Problem: how to import numpy in subdirectory? Import error of numpy within subfolder. 错 ...

  8. numpy归一化_使用numpy 高效实现K-Means聚类

    好久之前写过K-Means, 但写的极其丑陋,使用的时候还得用 sklearn.cluster.KMeans 包来干.最近需要手撕k-Means,自己也受不了多重for 循环这么disgusting的 ...

  9. numpy 最大值_使用 NumPy 让你的 Python 科学计算更高效

    具体的原理我也不大懂,简单理解就是Numpy的计算效率更高一些. Numpy里有两个对象: ndarray,实际上就是多维数组的含义,在Numpy数组中,维数称为秩(rank),一维数组的秩为 1,二 ...

最新文章

  1. 消息队列-ActiveMQ
  2. 在js文件中引用别的js文件的方法
  3. Python标准库07 信号 (signal包,部分os包)
  4. Redis与Memocache的区别
  5. php箱子,webshell箱子php版本.rar
  6. Android权限管理原理,Android手机Root授权原理细节全解析
  7. 【selenium 小练手 抓取某大厂TP】
  8. jQuery 属性操作 - toggleClass() 方法
  9. java 2 图形设计卷i awt_java 2 图形设计卷i:awt
  10. webpack多个Html,使用webpack构建多页面应用
  11. Pandas官方文档(中文版)Pdf
  12. 简单说 CSS滤镜 filter属性
  13. 他是程序员出身,如今身价上亿!一人干出了美国版的:携程、安居客、看准网!...
  14. Ubuntu下可以使用的微信
  15. linux中sed提取ip,通过sed命令获取IP地址
  16. CCRC信息安全服务资质。
  17. 电脑用c语言恢复出厂设置,教您如何用英语将Lenovo笔记本计算机恢复为出厂设置...
  18. before和after怎么区分_before和after区别 after的用法
  19. 2018年4月份 软件发明专利培训
  20. UE4-编辑器脚本之资产批量重命名

热门文章

  1. 一篇文章来告诉你可视化是多么重要
  2. SAP Spartacus Session affinity
  3. 如何找到 SAP 电商云 Spartacus UI 导航 navigation 的驱动器 - NavigationEntryItemEffects
  4. SAP Spartacus 服务器端渲染的三种可能情形
  5. Jasmine里的describe,it和expect函数
  6. Angular里使用createEmbeddedView动态加入新的模板元素
  7. JSP每隔指定的时间段自动刷新页面
  8. build.gradle里repositories的mavenCentral实现原理解析
  9. 如何替换Maven下载依赖时使用的仓库地址
  10. SAP云平台上的Mendix服务 - 如何注册帐号