对数组的分割
Hsplits( 参数1 , 参数2)
第一个参数是待分割的数组。
第二个参数是要把数组从哪几列分割。
若把一个数组分割成两个,则参数2 是一个数字,若分割成两个以上,参数2是一个元组,而且不可以大于要原数组的列数。
Vsplit(参数1,参数2) 表示按行分割数组。参数同上
相等于引用,变量名不同但指向相同的内存空间。
浅拷贝,变量名不同,a 保存数据的内存地址,c 保存a的内存地址。改变c的元素相当于改变a的元素
深拷贝,在内存中再创建一份数据,赋给新的变量。改变一个的元素,不影响另外一个数组的元素
常用函数
提取数组内某些特定的元素,生成新的数组。
如图提取a数组中的i数组所对应下标的元素,组成新数组。
默认按行进行提取,如果要按列提取,就要如图进行指定。
提取数组中列的最大元素
Xrange(data.shape[1]) 返回一个迭代对象,这里data.shape[1] 是 4 所以返回 [0,1,2,3]。
Data.argmax(axis = 0) 表示按列,最大元素所在的行的索引。
Data[ ind , xrange(data.shape[1])] 返回没列的最大值。
也可以返回没行的最大值:
Data[ xrange(data.shape[0]) , data.argmax(axis=1)]
参数:
Axis = 0 按列干什么
Axis = 1 按行干什么
对部分元素的操作。
生成boolean数组和基本应用,提取原数组为true的元素。
替换数组中的满足条件的元素
按行、按列提取
Ix_() 函数用于生成数组所有可以的组合。
在这里是 a , b , c 这三个数组,计算(a[n] + (b[n] * c[n] ) 的所有可能的组合(n表示多个数组的任意下标)。
例如:计算 a[n] + b[n] + c[n]的所有可能结果的方法有两种:
1.
2.
Transpose 求转置
Inv 求逆矩阵
Pinv 求伪逆矩阵
Eye 创建单位数组
Dot 矩阵运算
Linalg.trace 求数组的迹,主对角线元素的和。
Linalg.solve 求线性方程的解
已知: 数组a 数组b 求一个是数组x
满足dot(a , x) == b
Linalg.eig 求矩阵的特征向量,返回前一个数组是特征值,后一个数组是特征向量(每一列是一个特征向量)。
特征向量说明:
linalg.companion() 求伴随矩阵
矩阵的运算
矩阵的创建
A.T 求矩阵的转置
* 表示矩阵的乘法
A.I 表示矩阵的逆
Solve(A , Y) 矩阵的线性运算
矩阵(matrix) 和 数组(array)的不同
创建矩阵M 和数组 A
第一个不同点:
数组列是一个向量
矩阵的列是一个矩阵
如上用shape查看两者的维度时,会有不同,表示方法也不同。
数组求出的boolean 是一个数组,而且应用时以列为单位。
矩阵求出的boolean 是一个矩阵,如上求得一个二位boolean矩阵,应用时以行为单位。
如果要想像矩阵一样提取列,如下:
其中M 是矩阵
M.A 表示把矩阵变回数组 matrix —- > array
其他:
Mean() 求平均值
Median() 求中位数
Min() 求数组中最小值
Max() 求数组中最大值
Minimum(,) 求两个数组中较小的一个
Maximum(,) 求两个数组中较大的一个
Nonzero() 发现非零列返回一个数组内容是列号
参考:
1. http://wiki.scipy.org/Tentative_NumPy_Tutorial
2. http://wiki.scipy.org/Numpy_Example_List