python之numpy概括总结
初步学习了numpy模块的使用,在此做总结,以便大家参考,也为以后自己的复习与查询做下记录
Numpy
numpy的主要对象是同种元素的多维数组,所有的元素都必须是一种类型,可通过一个正整数元组索引的元素表格。在numpy中维度称为轴(axes),轴的个数叫做秩(rank)。Numpy的数组类型narray,其常用对象属性:
ndarray.dim 数组轴的个数
ndarray.shape 数组的维度
ndarray.size 数组元素的个数
ndarray.dtype 数组元素类型
ndarray.itemsize 数组每个元素的字节大小
ndarray.data 指向数据内存,包含实际数组元素
创建数组:
1, 通过list或元组创建ndarray,元素类型可以由给定的数据自动推导出来,也可以由设计者给定。示例:
Import numpy as np
a= np.array([1,2,3]),此时a.dtype值为 ‘int32’;
b= np.array([1,2,3], dtype = float64),此时b.dtype值就为float64
c= np.array([[1,2,3], [4,6,5], [7,8,9]]),生成二维数组,可生成多维数组
2,调用zeros/ ones/ empty/ zeros_like/ones_like/ eye等函数生成
3,调用arange/ linspace也可生成
打印数组
使用print即可,如 a = np.arange(9).reshape(3,3),再调用print(a)即可将数组a显示出来,
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
基本运算
1, 数组的算术运算是按元素进行的。
设a = np.array([2,3]) ,b=np.array(7,8)
加法:c = a+b, 则c为 array([9,11])
加法:c = b-a, 则c为 array([5,5])
乘法:c = a*b, 则c为 array([14,24])
二次方:c = a**2,则c为array([4, 9])
当两个数组元素的类型不同时,其会进行类型转换,往更精确的方向转换,比如int和float相加,得到的结果为float
2, 矩阵乘法 dot函数
索引
可通过arr[a, b], arr[:,b],arr[a, :],arr[m:n, b],arr[a, m:n],arr[m:n, p:q]等多种形式进行访问某个位置的元素、行或列。
arr[-1]表示访问最后一行
for row in arr: //表示按行访问arr
print row
若想访问每个数组中元素,可以使用flat属性,如
for element in b.flat:
print element
关于索引这一块,推荐博客:http://blog.****.net/chen_shiqiang/article/details/51868115
组合不同的数组
可以沿不同轴将数组堆叠在一起:
Column_stack: 以列将一维数组组合成二维数组
Row_stack:以行将一维数组组合成二维数组
Hstack:水平方向堆叠
Vstack:垂直方向堆叠
Concatenate:允许可选参数给出组合时沿着的轴
将数组分割:
Hsplit:水平分割
Vsplit:垂直分割
Array_split:指定沿哪个轴分割
深拷贝与浅拷贝
a= np.array([1,2,3]);
b= a; #浅拷贝,即b与a指向同一个空间, b is a = true
c= a.copy() #深拷贝,把a的内容复制给了c,不指向同一空间, c isa = false
d = a.view() #浅复制,d与a指向同一数据空间,但是此时创建了新的对象,d is a=false
mat函数
mat函数将目标数据类型转换为矩阵(matrix)
matrix对象是继承ndarray而来,因此其和ndarray有相同的属性和方法,但它们之间有六个重要的区别:
(1) 矩阵对象可以使用字符串符号创建,以允许matlab风格语法
(2) 矩阵对象总是二维的
(3) 矩阵对象乘法就是矩阵乘法
(4) Matrix objects over-ridepower to be matrix raised to a power. The same warning about using power insidea function that uses asanyarray(...) to get an array object holds for this fact.(这个没太懂)
(5) 矩阵对象的默认优先级__array_priority__是10.0,因此与ndarrays的混合操作总是产生矩阵
(6) 矩阵有其特殊属性,使计算更容易. arr.T矩阵转置,arr.I矩阵求逆,arr.H矩阵共轭, arr.A将矩阵作为一个ndarray对象返回
关于numpy的官方文档:
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
http://www.scipy-lectures.org/intro/numpy/index.html