numpy包的使用
- 数组的简介 ndarray
- 数组的创建 list/tuple np.arange() 内置函数
- 索引和切片 python一致
- 数组的变换 x.flatten() .reshape() x.transpose()
- 数组的组合 hstack vstack
- 数据分割 hsplit vsplit
- 矩阵 生成矩阵 矩阵和数组之间的转换 mat array
一、数组的简介
Numpy中,最重要的数据结构是:多维数组类型(numpy.ndarray)
ndarray由两部分组成:实际所持有的数据和这些数据的元数据(metadata)
数组(即矩阵)的维度被称为axes,维数称为rank
ndarray 的重要属性包括:
- ndarray.ndim:数组的维数,也称为rank
- ndarray.shape:数组各维的大小,对一个n行m列的矩阵来说, shape 为 (n,m)
- ndarray.size:元素的总数。
- ndarray.dtype:每个元素的类型,可以是numpy.int32, numpy.int16, and numpy.float64等
- ndarray.itemsize:每个元素占用的字节数。
- ndarray.data:指向数据内存。
二、数组的创建
1.使用array方法生成数组(array,也就是数组,是numpy中最基础的数据结构,最关键的属性是维度和元素类型)
n1=np.array([1,2,3,4])
n1
array([1, 2, 3, 4])
n2=np.array((1,2,3,4))
n2
array([1, 2, 3, 4])
2.使用np.arange()方法生成数组
np.arange([start, ]stop, [step, ]dtype=None)
np.arange(5)
array([0, 1, 2, 3, 4])
**衍生**
np.random.randint(10,150,size=(2,3))
array([[ 38, 103, 106],
[ 98, 134, 15]])
3.使用内置函数生成特殊矩阵
零矩阵
np.zeros((3,4))
[[ 0. 0. 0. 0.]
0 .0. 0. 0.]
[ 0. 0. 0. 0.]]
一矩阵
np.ones((3,4))
单位矩阵
print np.eye(3)
三、索引和切片(和python语法一致)
x = np.array(((1,2,3),(4,5,6)))
x[1,2] #获取第二行第三列的数6
y=x[:,1] #获取第二列
yarray([2, 5])
四、数组的变换*
1、多维变成一维(x.flatten())
>>> x
array([[1, 2, 3],
[4, 5, 6]])
>>> x.flatten()
array([1, 2, 3, 4, 5, 6])
2、一维变成多维(.reshape())
>>> print np.arange(15).reshape(3,5) #改变形状,将一维的改成三行五列
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
3.转置(x.transpose())
>>> x
array([[1, 2, 3],
[4, 5, 6]])
>>> x.transpose()
array([[1, 4],
[2, 5],
[3, 6]])
五、数组的组合 hstack vstack
- 水平组合
n1=np.array([1,2,3,4])
n1
n3=np.random.randint(0,3,5)
n3
np.hstack((n1,n3))
array([1, 2, 3, 4, 1, 2, 2, 0, 1])
2.垂直组合
>>> numpy.vstack((x,y))
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
六、数据分割 hsplit vsplit
1、垂直分割
>>> z
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
>>> numpy.vsplit(z,2) #注意这里设置的分割数目必须可以被行数整除
>[array([[1, 2, 3],
[4, 5, 6]]), array([[1, 2, 3],
[4, 5, 6]])]
2.水平分割
>>> numpy.hsplit(z,3)
[array([[1],
[4],
[1],
[4]]), array([[2],
[5],
[2],
[5]]), array([[3],
[6],
[3],
[6]])]
用split函数可以同时实现这两个效果,通过设置其axis参数区别,与组合类似,这里不在演示。
七、矩阵
1.生成矩阵
>>> numpy.mat('1 2 3;4 5 6;7 8 9')
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
2.矩阵与数组之间的转换
矩阵转数组
>>> m=numpy.mat('1 2 3;4 5 6;7 8 9')
>>> numpy.array(m)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
数组转矩阵
>>> n=numpy.array(m)
>>> numpy.mat(n)
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
求逆m.I