Numpy 对于矩阵的操作持续更新

>>> import numpy as np
>>> a = np.random.randint(10,size=(5,5))
>>> a
array([[0, 8, 3, 0, 2],
       [0, 6, 6, 6, 3],
       [0, 3, 6, 8, 7],
       [2, 6, 1, 4, 4],
       [4, 1, 5, 6, 4]])

1. 数组切片

随机生成5x5的一个矩阵

提取矩阵第n列

>>> a[:,3]
array([0, 6, 8, 4, 6])

提取矩阵第n行

>>> a[3,:]
array([2, 6, 1, 4, 4])

提取矩阵第n行到第n+m行

>>> a[1:4]
array([[0, 6, 6, 6, 3],
       [0, 3, 6, 8, 7],
       [2, 6, 1, 4, 4]])

提取矩阵第n行到第n+m列

>>> a[:,1:4]
array([[8, 3, 0],
       [6, 6, 6],
       [3, 6, 8],
       [6, 1, 4],
       [1, 5, 6]])

使用布尔数组选取数据集中大于4的数字

>>> a[a>4]
array([8, 6, 6, 6, 6, 8, 7, 6, 5, 6])

使用布尔数组选取数据集中第二列大于3的数字所在的行

>>> a[a[:,1]>3]
array([[0, 8, 3, 0, 2],
       [0, 6, 6, 6, 3],
       [2, 6, 1, 4, 4]])

使用布尔数组选取数据集中第二列等于3的数字所在的行

>>> a[a[:,1]==6]
array([[0, 6, 6, 6, 3],
       [2, 6, 1, 4, 4]])

使用布尔数组设置值,把数组a中小于4的值都设置为0

>>> a[a<4]=0
>>> a
array([[0, 8, 0, 0, 0],
       [0, 6, 6, 6, 0],
       [0, 0, 6, 8, 7],
       [0, 6, 0, 4, 4],
       [4, 0, 5, 6, 4]])

使用一维布尔数组设置整行或列:把第一列中含有数字6的行,全部设置为7

>>> a[a[:,1]==6]=7
>>> a
array([[0, 8, 3, 0, 2],
       [7, 7, 7, 7, 7],
       [0, 3, 6, 8, 7],
       [7, 7, 7, 7, 7],
       [4, 1, 5, 6, 4]])

取特定顺序行的数组,通过传递一个列表或整形ndarray来指定想要的顺序

>>> a[[1,3,4]]
array([[7, 7, 7, 7, 7],
       [7, 7, 7, 7, 7],
       [4, 1, 5, 6, 4]])

2.数组索引

返回array中数字6的索引值

>>> np.where(a==6)
(array([1, 1, 1, 2, 3, 4]), array([1, 2, 3, 2, 1, 3]))

返回的是一个tuple,第一个代表的是按列查找的索引值,第二个代表的是按行查找的索引值

类似的

>>> np.argwhere(a==6)
array([[1, 1],
       [1, 2],
       [1, 3],
       [2, 2],
       [3, 1],
       [4, 3]])

返回的是一个array

3.类型转换

类型转换

>>> a.astype(np.float)
array([[0., 8., 3., 0., 2.],
       [0., 6., 6., 6., 3.],
       [0., 3., 6., 8., 7.],
       [2., 6., 1., 4., 4.],
       [4., 1., 5., 6., 4.]])
>>> a.astype(np.str)
array([[‘0‘, ‘8‘, ‘3‘, ‘0‘, ‘2‘],
       [‘0‘, ‘6‘, ‘6‘, ‘6‘, ‘3‘],
       [‘0‘, ‘3‘, ‘6‘, ‘8‘, ‘7‘],
       [‘2‘, ‘6‘, ‘1‘, ‘4‘, ‘4‘],
       [‘4‘, ‘1‘, ‘5‘, ‘6‘, ‘4‘]], dtype=‘<U21‘)

数组和纯量之间的操作

>>> a*a
array([[ 0, 64,  9,  0,  4],
       [ 0, 36, 36, 36,  9],
       [ 0,  9, 36, 64, 49],
       [ 4, 36,  1, 16, 16],
       [16,  1, 25, 36, 16]])
>>> a-a
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])

纯量的算术操就是把操作值作用于每一个元素

>>> a-3
array([[-3,  5,  0, -3, -1],
       [-3,  3,  3,  3,  0],
       [-3,  0,  3,  5,  4],
       [-1,  3, -2,  1,  1],
       [ 1, -2,  2,  3,  1]])
>>> a*3
array([[ 0, 24,  9,  0,  6],
       [ 0, 18, 18, 18,  9],
       [ 0,  9, 18, 24, 21],
       [ 6, 18,  3, 12, 12],
       [12,  3, 15, 18, 12]])

原文地址:https://www.cnblogs.com/laozhanghahaha/p/8594145.html

时间: 2024-11-10 08:04:14

Numpy 对于矩阵的操作持续更新的相关文章

iOS特殊操作--持续更新

1. ios8,9开始支持icloud,影响相册相关操作: 3. 应用切到后台后,新消息提醒 是否在应用图标右上角作数字标记,有开关控制:   设置->通知->应用名称->"应用程序图标标记"选中此项,表示有数字标记,不选则没有: 4. 如何在数据网络下查看手机IP setp1.打开手机数据网络 setp2.打开手机浏览器--百度,在百度搜索框中 输入"IP地址" setp3. 查看搜索结果: 5. 连续输入两个空格,会成为一个句号 如果是中文输入

MySQL日常运维操作---持续更新

1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached 25 ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected 9 ##打开的连接数 Threads_created 55158 ##表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器 Threads_running 1 ##激活的连接数,这个数

Python中常用的一些操作总结(持续更新)

写在前面的话 其实也没有什么可以写的,或者说完全没有价值.因为你只要动一动手指就可以在Google上找到我要写的这些东西.只是我还不习惯好久没有碰我的blog,但是我又不想写没有价值的东西.或许有价值,只是在我一年两不编程的情况下,我会忘记那些我以前很熟悉的操作是怎么完成的,或许混到那个地步我的人生就开始悲剧了吧.总之,成长成我想要的样子我还是需要很长的路要走. 这一篇是会持续更新的,至少为了保证它看起来不那么水,也要让它持续更新 python中的进制转换 1.其他进制转换为10进制 所有的进制

百篇必看文章 从入门到独立开发【附加源码】持续更新

小项目实战+源码+教程 叶湘伦:爬虫福利 之 妹子图网MM批量下载 叶湘伦:用python来测试下 2019 你一共写了多少行代码? 叶湘伦:Python 愤怒的小鸟代码实现:物理引擎pymunk使用 叶湘伦:Python 超级玛丽代码实现:人物行走和碰撞检测 叶湘伦:如何用Python画一只肥肥的柯基狗狗——turtle库绘制椭圆与弧线实践 叶湘伦:如何用Python画一只兔子——turtle库circle()画圆函数的详细用法介绍 叶湘伦:教你一键快速生成后台代码,这样和测试小姐姐聊天的时间

软件测试知识点汇总目录(持续更新)

个人在工作之余通过word文档长期持续更新工作中需要涉及到的一些理论和技术知识.所谓好记记性,不如乱笔头.根据工作年限和职位的变化,以及就职公司参与的产品或者项目所涉及到的测试方面的技能不一样,会存在有些之前的技能不经常使用,会导致生疏的现象.虽然不至于归零,但是一旦需要使用的时候,有一个相对比较完整规范的文档来应急阅读来回顾其使用等是很有帮助的.比在网上搜索出来的相关零散的不完整的知识点方便的多. 文档创建年限不是很长,有很多知识项没有写入文档或者还没有来得及编写,需要在后续持续更新.文档编写

自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常棒,所以好东西要分享,为啥用 CN 博客,有个好处,可以随时修改,可以持续更新,不用每次都要再发表,感觉这样棒棒的 我们 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.

转-推荐的几个开发常用在线工具,可以提升开发效率(持续更新)

http://blog.csdn.net/kroclin/article/details/40634975 相信开发中每个人手头上面都有那么几个工具可以让你每天洋洋得意的开发软件,而这里我就将我觉得还挺不错的几款在线工具分享出来,仁者见仁啦,喜欢就拿走.还会持续更新,以后有新的我都贴上来. 1.MD5解密:http://www.cmd5.com/ 2.MD5加密:http://md5jiami.51240.com/ 3.json在线解析工具:http://json.parser.online.f

MongoDB学习——持续更新

參考MongoDB权威指南,学习阶段.大家多多交流问题.持续更新本文 MongoDB的长处 MongoDB具有丰富的数据模型,是面向文档的数据库. easy扩展.能够在多台server之间切割数据. 开发人员仅仅需专注于编写应用.假设须要更大的数据.仅仅需在集群中加入新机器,然后让数据库来处理剩下的事情. 具有丰富的功能,比方索引,存储JavaScript,聚合,固定集合.文件存储. 不支持联接(join)和复杂的多行事物. 卓越的性能是MongoDB的主要目标,默认的存储引擎使用了内存映射文件

动态加载页面数据的小工具 javascript + jQuery (持续更新)

使用该控件,可以根据url,参数,加载html记录模板(包含json参数对应,以及具体记录位置Index根据参数描述加载对应的属性,并可以根据简单的判断分支加载对应html或者控件)至列表容器内(JQuery选择器字符串)注: 该控件在使用前需引入JQuery框架支持,使用该控件,可极大的减少Ajax列表数据动态加载开发工作的实际工作量. 使用方式: 首先,添加控件引用,并加入Jquery支持 <script src="js/jquery.js"></script&g