numpy矩阵最大值所在位置_图解NumPy包一文就够了

本文介绍了Python中的NumPy包,重点讲解如何找到矩阵的最大值及其位置。NumPy是数据分析的基础,提供了丰富的数组运算和数据处理功能。文章通过构建基本数据结构、演示运算规则、介绍高阶用法,以及在时间序列、图像处理和语言处理中的应用,帮助读者深入理解NumPy。此外,还提醒读者NumPy已放弃对Python2的支持,建议转向Python3。
摘要由CSDN通过智能技术生成

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

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

今天的推送大纲如下:

22cd6118a35bc8988c738ab3e4ab032f.png

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

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

基本用法

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

import numpy as np

构建基本数据结构:

  1. 数组

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

    35f853ee361adcde3bb774685f2a56b3.png

    c6726337070f363ed0aca25b380cf4a9.png

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

    # 构建矩阵

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

    e58b4005ed4be74b111bb1651cfa413d.png

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

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

    bd8c61e900891b9204d4473e16cc4a58.png

    4b87269655c7fd3f70ab18efc01eedc6.png

运算

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

    746620129f1891c281ff30ebf18c7876.png

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

    9a17305d4f5abce3da7af9a0d5436229.png

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

    78693a2fe638da989f146e1e255cfaf7.png

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

    具体的计算方法如下:

    e42f50a2da734f9243bfb2b854e212a6.png

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

    7a3ac57edda7663dde5f1e320a487ad4.png

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

    3ebfd9da3738b3f6cbf0b7ef078bd4b3.png

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

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

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

    1d51672b84e2e303434f869f929b7006.png

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

    39daa52e36c1975e289dd95ba8129fcb.png

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

高阶用法

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

7b6f288316b7dadda89ae097ba8cb08a.png

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

1e329af477a3a58b8002ca91bb3cf4203.png

2

49fe577b37dc8e4123c743ae831d0943.png

3

6487cb7259c10d19551c35389c85ade0.png

4

7dbb2b9ca81c1767337bc491eaaff28d.png

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

更多应用

时间序列和音乐

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

315085bcee2653979cbaa9860eeb4eb8.png

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

图像

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

举个例子:

e45572af48db85456b37efa6549fc8b6.png

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

384ffca6b7a88327f29457ac32ba5845.png

语言

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

17ed54c056491485c9b0c151911b284f.png

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

438a58f5371af14e755cb755452416c7.png

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

a39a23ddba0e8064915a7a5a2b00b080.png

但是这些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):)

223d908e77fe2e64f523fcc4c3733a79.png

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

eff023bac1092b9a6efe93683eb65f94.png

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

一点注意

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

猜你喜欢

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

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

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

爬虫小测试 | 函数入门

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

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

类与对象

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值