numpy学习笔记

矩阵的读取

numpy.getfromtxt(path,delimiter,dtype)

打开txt文件 类型为ndarray dtype指定数据类型

vector = numpy.array(list)

传入一维数组或–

vector.shape

vector 的行列值

vector.dtype

vector 中每个元素的类型

vector.astype(type)

转换vector内值的类型

matrix.sum(axis=1)

对每行求和 axis=0 是对列求和

numpy.arange(15).reshape(3,5)

将一个一维数组转换为3行5列的二维数组

vector.ndim

vector的维度

numpy.zeros((3,4),dtype)

构造3行5列的空矩阵,dtype指定类型,numpy.ones 构造值为1 的矩阵

numpy.random.random((2,3))

构造随机矩阵,范围为0-1

numpy.linspace(0,2*pi,100)

构造一个从0开始到2π,个数为100的矩阵

1
2
3
4
5
A = numpy.array([[2,3],[4,1]])
B = numpy.array([[1,1],[3,1]])
A*B
A.dot(B)
numpy.dot(A,B)

A*B 两矩形对应位置相乘

A.dot(B) 或 numpy.dot(A,B) 矩阵点乘

1
2
numpy.exp(B)
numpy.sqrt(B)

exp 表示e的B次幂 ,sqrt 求根号B

1
2
3
4
5
a = numpy.floor(10*numpy.random.random((3,4)))
a.ravel()
a.shape=(6,2) #将矩阵转为6×2的矩阵
a.T #转置
a.reshape(3,-1) #将矩阵转为3×n 的矩阵 n会自动计算

ravel() 将矩阵转为一维数组

矩阵的拼接操作

1
2
3
4
5
6
a = numpy.floor(10*numpy.random.random((2,2)))
b = numpy.floor(10*numpy.random.random((2,2)))
#拼接操作
numpy.hstack((a,b)) #横着拼

numpy.vstack((a,b)) #竖着拼
1
2
3
4
5
6
7
8
a = numpy.floor(10*numpy.random.random((2,12)))
# 分割操作
numpy.hsplit(a,3) #分割为3个矩阵

numpy.hsplit(a,(3,4)) # 对行的指定位置进行切分

numpy.vsplit(a.T,3)
numpy.vsplit(a.T,(3,4))

矩阵复制操作

  1. 简单指向

    1
    2
    3
    a = numpy.arange(12)

    b = a #将b指向a
  1. 浅复制

    1
    c = a.view()  #a与c的值是公用的
  2. 深复制

    1
    d = a.copy() #完全复制

矩阵的排序

1
2
3
4
5
data = numpy.sin(numpy.arange(20)).reshape(5,4)

ind = data.argmax(axis=0) #返回每列最大值所在的行数

data_max = data[ind,range(data.shape[1])] #返回每列最大值
1
2
3
4
5
a = numpy.array([[5,3,4],[1,2,1]])
b = numpy.sort(a,axis=1) #对每行进行排序

a = numpy.array([2,3,5,1])
b = numpy.argsort(a) # 返回排序后的索引

矩阵扩展

1
2
3
a = numpy.arange(0,40,10)

b = numpy.title(a,(2,3)) #行变为两倍 列变为两倍