Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值
1. 整体复制和按块复制
已知数组:
In [17]: a = np.array([1,2,3])In [18]:
返回如下数组:
array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])
分析:
数组前半部分 1, 1, 1, 2, 2, 2, 3, 3, 3
通过 repeat
函数复制 3 次,后面部分通过 tile
函数复制 3 次,然后合并数据。
In [17]: a = np.array([1,2,3])In [18]: np.hstack((np.repeat(a,3), np.tile(a,3)))
Out[18]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])In [19]:
2. 向量化操作
借助 NumPy
的 vectorize
实现操作向量化。原生的 Python
列表不支持向量化操作,两个列表相加默认不是逐个元素相加:
In [19]: a = [1,2,3]In [21]: b = [4,5,6]In [22]: a + b
Out[22]: [1, 2, 3, 4, 5, 6]In [23]:
但是,借助 vectorize
能实现矢量相加, addv
函数就能实现两个数组相加:
In [24]: def add(x, y):...: return x+y...: In [25]: addv = np.vectorize(add)In [26]: addv(a, b)
Out[26]: array([5, 7, 9])In [27]:
3. 填充缺失值
如下数组,含有缺失值,使用 -1 填充:
In [32]: a = np.array([[ 0., np.nan, 2., 3.],...: [ 4., 5., np.nan, 7.],...: [ 8., 9., 10., 11.],...: [12., 13., np.nan, 15.],...: [16., 17., np.nan, 19.],...: [20., 21., 22., 23.]])
一行代码, np.isnan(a)
逐元素检查,若为空则为 True
,否则为 False
,得到一个与原来 shape
相同的值为 True
和 False
的数组。
In [34]: a[np.isnan(a)] = -1In [35]: a
Out[35]:
array([[ 0., -1., 2., 3.],[ 4., 5., -1., 7.],[ 8., 9., 10., 11.],[12., 13., -1., 15.],[16., 17., -1., 19.],[20., 21., 22., 23.]])In [36]:
4. 找缺失值
NumPy
使用 np.nan
标记缺失值,给定如下数组 a,求出缺失值的索引。如下使用 where
函数,返回满足条件的位置索引:
In [36]: a = np.array([ 0., 1., np.nan, 3., np.nan, np.nan, 6., 7., 8., 9.])In [37]: a
Out[37]: array([ 0., 1., nan, ..., 7., 8., 9.])In [38]: np.where(np.isnan(a))
Out[38]: (array([2, 4, 5], dtype=int64),)In [39]:
5. 返回无缺失值的行
**给定数组,找出没有任何缺失值的行:
In [39]: a = np.array([[ 0., np.nan, 2., 3.],...: [ 4., 5., np.nan, 7.],...: [ 8., 9., 10., 11.],...: [12., 13., np.nan, 15.],...: [16., 17., np.nan, 19.],...: [20., 21., 22., 23.]])In [39]: In [40]: m = np.sum(np.isnan(a), axis=1) == 0In [41]: m
Out[41]: array([False, False, True, False, False, True])In [42]: a[m]
Out[42]:
array([[ 8., 9., 10., 11.],[20., 21., 22., 23.]])In [43]:
Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值相关推荐
- Numpy 多维数组变为常量、增加维度、元素复制、按块复制、横轴竖轴合并数组、连接数组
1. flatten NumPy 的 flatten 函数也有改变 shape 的能力,它将高维数组变为向量.但是,它会发生数组复制行为. In [57]: m = np.random.randint ...
- CAD制图中如何复制图块操作?
不少的CAD设计师都会把常用的图形设置成块,用时直接插入.CAD中如何把图形复制为块?感兴趣或者想学习的小伙伴不妨跟着小编一起来看具体操作步骤: 1.在我们的电脑桌面上方找到XUN 捷CAD编辑器的图 ...
- VIM选择文本块/复制/粘贴
在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择. 其它相关命令: v:按字符选择.经常使用的模式,所以亲自尝试一下它. V:按行选择.这在你想拷贝或者移 ...
- 如何处理SQL Server事务复制中的大事务操作
如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对 ...
- 前端er怎样操作剪切复制以及禁止复制+破解等
前言 有时候我们经常会碰到这些场景:玩掘金.知乎的时候复制一段文字,总是会在内容后面加上一些版权信息,以及像小说网站等都有禁止选中,禁止复制这种功能,还有点击自动复制账号的功能. 我也经常遇到这些场景 ...
- hexo博客yilia主题添加复制代码块功能
博客中的复制代码块功能还是挺实用的,本文参考自 这个博客,感谢并膜拜这位大佬,该博客应该是yilia主题添加复制代码块功能的首创,详细记录了整个过程,看起来比较繁琐(无贬义),所以我单独整理一份最终版 ...
- 前端er怎样操作剪切复制以及禁止复制+破解等 1
前言 有时候我们经常会碰到这些场景:玩掘金.知乎的时候复制一段文字,总是会在内容后面加上一些版权信息,以及像小说网站等都有禁止选中,禁止复制这种功能,还有点击自动复制账号的功能. 我也经常遇到这些场景 ...
- poi操作excel,复制sheet,复制行,复制单元格
项目中,我们经常使用Poi来操作excel,但是经常碰到一个不方便的地方,不如最简单常用的,在两个excel之间复制sheet,复制行,复制单元格等. 我这里是最近刚做的一个简单封装.不是很好,必须始 ...
- poi操作excel,复制sheet,复制行,复制单元格 .
http://blog.csdn.net/wutbiao/article/details/8696446 项目中,我们经常使用Poi来操作excel,但是经常碰到一个不方便的地方,不如最简单常用的,在 ...
最新文章
- 院士张钹:AI奇迹短期难再现 深度学习技术潜力已近天花板
- ipad php mysql_如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
- 腾讯的模板引擎---artTemplate
- Java Thread类的使用
- OpenStack collectd的从零安装服务端
- C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序
- 网站防止SQL注入方法
- Comparable and Comparator API
- mfc gridctrl 设置某列自动伸长_三明桥梁智能张拉设备数控智能张拉系统全自动智能张拉系统...
- 常见排序算法整理1(C++实现)
- 做一个简易jsp项目的详细开发流程及步骤
- 信号硬件入门--振幅调制信号发生器(正弦波发生器方案、AM调制方案)--First理论部分
- 【uniapp小程序】—— APP项目云打包(安卓)
- 读《美国交通信号配时实践经验》后的感受
- rpc调用和http调用有什么区别
- 曾经的荣誉,偶然被唤醒
- 星巴克中国咖啡创新产业园正式动工,追加项目总投资至近11亿元
- cura切片操作学习
- linux已经读写次数ssd剩余,固态硬盘ssd写入量剩余读写次数怎样查
- 查找/下载文献的一些网址汇总
热门文章
- 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?
- Jquery DIV滚动至浏览器顶部后固定不动代码
- 2022-2028年中国降解塑料聚酯行业运行动态及投资机会分析报告
- 数据结构(04)— 线性顺序表实战
- Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)
- Lampiao靶机渗透测试
- 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积
- 字符串编辑距离(Edit Distance)
- 自动驾驶系统关系与自动泊车原理
- HarmonyOS 点击事件的实现