Python Numpy数据分析中常用方法
来源:互联网 发布:新速特软件官网 编辑:程序博客网 时间:2024/06/02 08:16
一、多维的表示
Numpy用列表表示多维矩阵:
一维,维数大小为4:
[ & & & &]
二维,维数大小为3:
& = [ @ @ @ ]
上述二者添加变成:
[ [ @ @ @ ] [ @ @ @ ] [ @ @ @ ] [ @ @ @ ]]
三维列表如下:>>> b = numpy.arange(24).reshape(2,3,4)>>>print b[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]>>> b[1,2,1]21
通过索引查值可以理解为:从外往里找,
索引为1找到值:
[[12 13 14 15] [16 17 18 19] [20 21 22 23]]
索引为2找到值:
[20 21 22 23]
索引为1找到值:
21
二、生成数组
基本数据类型:
bool 用一个字节存储的布尔类型(True或False)
inti 由所在平台决定其大小的整数(一般为int32或int64)
int8 一个字节大小,-128 至 127
int16 整数,-32768 至 32767
int32 整数,-2 ^31 至 2 ^31 -1
int64 整数,-2 ^ 63 至 2 ^ 63 - 1
uint8 无符号整数,0 至 255
uint16 无符号整数,0 至 65535
uint32 无符号整数,0 至 2^ 32 - 1
uint64 无符号整数,0 至 2 ^ 64 - 1
float16 半精度浮点数:16位,正负号1位,指数5位,精度10位
float32 单精度浮点数:32位,正负号1位,指数8位,精度23位
float64或float 双精度浮点数:64位,正负号1位,指数11位,精度52位
complex64 复数,分别用两个32位浮点数表示实部和虚部
complex128或complex 复数,分别用两个64位浮点数表示实部和虚部
array方法:
通过列表:>>> print numpy.array([[1,2],[3,4]], dtype=int16) //显示定义数组元素类型[[1 2] [3 4]]通过元组>>> print numpy.array((1.0,2,3,4))[ 1.0 2. 3. 4. ]
arrange方法:
>>> print numpy.arange(11)[ 0 1 2 3 4 5 6 7 8 9 10]
linspace方法(1-3分成9份):
>>> print numpy.linspace(1,3,9)[ 1. 1.25 1.5 1.75 2. 2.25 2.5 2.75 3. ]
zeros(0),ones(1),eye(对角):
>>> print numpy.zeros((3,4))[[ 0. 0. 0. 0.] [ 0. 0. 0. 0.] [ 0. 0. 0. 0.]]>>> print numpy.ones((3,4))[[ 1. 1. 1. 1.] [ 1. 1. 1. 1.] [ 1. 1. 1. 1.]]>>> print numpy.eye(3)[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]]
三、数组属性
>>> a = numpy.ones((3,4))>>> print a.ndim #维数2>>> print a.shape #每一维的大小(3, 4)>>> print a.size #元素数12>>> print a.dtype #元素类型float64>>> print a.itemsize #每个元素所占的字节数8
四、数组索引,切片
索引:
>>> b = numpy.arange(24).reshape(2,3,4)>>>print b[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]>>> b[1,2,1]21
切片:
>>> b = numpy.arange(12).reshape(4,3) >>> print b [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]]
五、运算
+-*/
运算符+-*/都是对每个元素进行计算
>>> print a[[ 1. 1.] [ 1. 1.]]>>> print b[[ 1. 0.] [ 0. 1.]]>>> print a+b[[ 2. 1.] [ 1. 2.]]>>> print a-b[[ 0. 1.] [ 1. 0.]]>>> print b*2[[ 2. 0.] [ 0. 2.]]>>> print (a*2)*(b*2)[[ 4. 0.] [ 0. 4.]]>>> print b/(a*2)[[ 0.5 0. ] [ 0. 0.5]]>>> print (a*2)**4[[ 16. 16.] [ 16. 16.]]
其他方法
>>> a = numpy.ones((3,4))>>> a.sum()12>>> a.sum(axis=0) #计算每一列的和array([ 4, 4, 4])>>> a.min()1>>> a.max()1
#关于参数axis的含义:首先我们将三维数组想象成许多二维数组平面添加而成。可按倒序记忆:三维最后添加深度0,倒数第二添加列1,第一形成行2。则>>> print(X)[[[5 2] [4 2]] [[1 3] [2 3]] [[1 1] [0 1]]]>>> X.sum(axis=0) //全部平面上的对应位置array([[7, 6], [6, 6]])>>> X.sum(axis=1) //每一个平面的每一列array([[9, 4], [3, 6], [1, 2]])>>> X.sum(axis=2) //每一个平面的每一行array([[7, 6], [4, 5], [2, 1]])>>> print a[[0 1 2] [3 4 5] [6 7 8]]>>> a.sum(axis=0) //列array([ 9, 12, 15])>>> a.sum(axis=1) //行array([ 3, 12, 21])
>>> print a[[ 1. 1.] [ 1. 1.]]>>> numpy.sin(a)array([[ 0.84147098, 0.84147098], [ 0.84147098, 0.84147098]])>>> numpy.floor(a)array([[ 1., 1.], [ 1., 1.]])>>> numpy.exp(a)array([[ 2.71828183, 2.71828183], [ 2.71828183, 2.71828183]])
如果数组太长,Numpy默认只打印两端数据,可设置set_printoptions(threshold=’nan’) 强制打印
六、合并
属于深拷贝
>>> a = numpy.ones((2,2))>>> b = numpy.eye(2)//垂直组合>>> print np.vstack((a,b)) //与row_stack()行组合类似[[ 1. 1.] [ 1. 1.] [ 1. 0.] [ 0. 1.]]//水平组合>>> print numpy.hstack((a,b)) //与column_stack()行组合类似[[ 1. 1. 1. 0.] [ 1. 1. 0. 1.]]//深度组合>>> print a[[0 1 2] [3 4 5] [6 7 8]]>>> b = a*2>>> print b[[ 0 2 4] [ 6 8 10] [12 14 16]]>>> print numpy.dstack((a,b)) //a与b在相同位置的元素进行组合[[[ 0 0] [ 1 2] [ 2 4]] [[ 3 6] [ 4 8] [ 5 10]] [[ 6 12] [ 7 14] [ 8 16]]]
>>> a = numpy.ones((1,1))>>> b = a #浅拷贝,作为函数参数时属于浅拷贝>>> b is aTrue>>> c = a.copy() #深拷贝>>> c is aFalse
七、分割
垂直和水平分割:
>>> print a[[0 1 2] [3 4 5] [6 7 8]]>>> numpy.hsplit(a,3)[array([[0], [3], [6]]), array([[1], [4], [7]]), array([[2], [5], [8]])]>>> print numpy.hsplit(a,3)[array([[0], [3], [6]]), array([[1], [4], [7]]), array([[2], [5], [8]])]>>> print a[[0 1 2] [3 4 5] [6 7 8]]>>> numpy.hsplit(a,3)[array([[0], [3], [6]]), array([[1], [4], [7]]), array([[2], [5], [8]])]>>> numpy.vsplit(a,3)[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
深度分割:
>>> a = numpy.arange(27).reshape(3,3,3)>>> print a[[[ 0 1 2] [ 3 4 5] [ 6 7 8]] [[ 9 10 11] [12 13 14] [15 16 17]] [[18 19 20] [21 22 23] [24 25 26]]]>>> numpy.dsplit(a,3)[array([[[ 0], [ 3], [ 6]], [[ 9], [12], [15]], [[18], [21], [24]]]), array([[[ 1], [ 4], [ 7]], [[10], [13], [16]], [[19], [22], [25]]]), array([[[ 2], [ 5], [ 8]], [[11], [14], [17]], [[20], [23], [26]]])]
八、矩阵算法
>>> print a[[1 0] [2 3]]>>> numpy.dot(a,a) #运用矩阵乘法,对于一位数组做的是内积运算array([[ 1, 0], [ 8, 9]])>>> print a.transpose() #运用矩阵转置[[1 2] [0 3]]>>> print numpy.trace(a) #运用矩阵的迹4
九、其他
numpy.where函数是三元表达式x if condition else y的矢量化版本
plt.plot(xx, np.where(xx < 1, 1 - xx, 0), 'g-',label="Hinge loss")# if xx<1 则1-xx否则0
- Python Numpy数据分析中常用方法
- 机器学习数据分析之Python中Numpy的常用方法
- Python pandas数据分析中常用方法
- Python sklearn数据分析中常用方法
- python数据分析---Numpy
- python 数据分析-numpy
- 《Python数据分析基础教程:Numpy学习指南》 常用模块与方法简要记录
- 《Python数据分析常用手册》一、NumPy和Pandas篇
- Python数据分析常用手册——Numpy和Pandas
- Python数据分析-NumPy库常用用法总结
- 《Python数据分析常用手册》一、NumPy和Pandas篇
- 《Python数据分析常用手册》一、NumPy和Pandas篇
- 《Python数据分析常用手册》一、NumPy和Pandas篇
- python数据分析之Numpy
- python 数据分析 numpy基础
- 【python】numpy的常用方法
- Python Numpy 数据保存方法
- 利用python进行数据分析-NumPy基础
- 交换两个数的值
- ubuntu中出现找不到so之类共享库的错误解决
- MySQL中select * for update锁表的范围
- Python爬虫学习系列教程(2.7)
- 国嵌视频第二季之ARMl裸机开发
- Python Numpy数据分析中常用方法
- Error:Some file crunching failed, see logs for details
- 排序
- Windows安装Nodejs
- pl sql和oracle的关系
- 实时预览listview布局
- GO Method set方法集
- 信息检索笔记 第3周
- springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM