Numpy|需要信手拈来的功能
这是一篇Numpy中经常使用的API的不完全总结,欢迎补充和指导。
01
类型转化
凡是使用Numpy的小伙伴,无不遇到类型转化这个问题,并且经常需要通过调试才得以修正。
为什么这个问题如此棘手?
请看, arr = np.array([9,10,'2',10],只有一个元素为str类型,那么numpy会立即将所有元素转为str型。
在工作中,我们经常需要添加整列添加元素,这种操作可能会改变原来元素的类型。如果,你的操作涉及到数值上的加减乘除,添加元素后意外变为str型后,就会抛出异常。
这时候,需要进行显示类型转化:
arr = arr.astype(np.float64) # 直接转化为float64类型
02
维数变化
有时候需要将多维数组变为更小维的数组,比如常用的二维降低到一维。
如下的二维数组:
array([[ 5, 2],
[10, 8],
[ 3, 1]])
调用:
arr2 = arr.flatten()
变为1维:
array([ 5, 2, 10, 8, 3, 1])
03
排序
在numpy中,如何根据某列对多维数组正确排序,借助 lexsort
如下的二维数组myarray:
[['5', '4', '9', '10'],
['23', '7', '3', '5'],
['7', '3', '13', '4']
按照第3列从小到大排序:
myarray[np.lexsort(myarray[:,::-3].T)]
结果:
[['23', '7', '3', '5'],
['5', '4', '9', '10'],
['7', '3', '13', '4']]
04
一个带雷的去重方法
根据某种重复定义,去重,下面提供一种去重方法,但是它会带来另一个陷阱。
c=np.array(((1,2),(3,4),(5,6),(7,8),(7,8),(3,4),(1,2)))
规定(1,2)元包重复,想拿掉最后一个。
提供一种一行代码去重的方法:
np.array(list(set([tuple(t) for t in c])))
结果:
[[1, 2],
[3, 4],
[5, 6],
[7, 8] ]
这里类型变为list的了,大家忽略这个问题。
我想说的是另一个问题,这个结果貌似运来元素的顺序未变化。
但,因为通过set类型去重后,原来元素的顺序不给予保证,如果对顺序有要求的数据,经过这种去重后,会变得和原来的排序后的顺序不一致。这是需要注意的!
05
返回值
不光Numpy中,在引用任何其他库,一定要注意调用的接口影响的是参数,还是返回值。
rslt = np.c_[arr_a,arr_b] # 返回值是拼接后结果
而有些接口,直接将参数值修改,无返回值或其他返回值,这种需要区别对待。
- 算法之旅 | 选择排序法
- 【专业技术】Android数据保存之SharedPreferences
- 【答疑解惑】Java中的高精度数字
- 2000! | 看上去如此简单的面试题,让太多“前端”英雄好汉折戟
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
- arguments,想说爱你不容易
- 【android开发】Android binder学习一:主要概念
- 高考啦! JavaScript高考全国卷
- 2017 JavaScript高考全国卷 参考答案与解析
- 用贝叶斯判别分析方法预测股票涨跌
- 开发 | 在 Mac OS X 装不上 TensorFlow?看了这篇就会装
- 【答疑解惑】Java中的默认构造器和equals方法
- 原生JS | 当兔子遇到鸡
- 【Android基础】Activity的生命周期函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法