Eastsheng's Wiki

Numpy/math

2021-01-22 18:11:28

[toc]

Numpy

矩阵创建

  • 创建0向量/三维矩阵

    1
    2
    3
    import numpy as np
    np.zeros((10))
    np.zeros((1,10,10))
  • 创建1向量/三维矩阵

    1
    np.ones((1,10,10))

矩阵拼接\转置

1
2
3
np.hstack((matrix1,matrix2)) #横向拼接
np.vstack((matrix1,matrix2)) #纵向拼接
matrix1.T #转置

求平均

1
2
np.mean(array,axis=1) #行平均
np.mean(array,axis=0) #列平均

只保留独一无二值

1
np.unique() #去除numpy数组里的相同值

给矩阵嵌入值

  • 例如:给矩阵x在第三列插入一列0
    1
    np.insert(x,3,0,axis=1)

矩阵排序例子

  • 按照第一列对矩阵fe进行排序
    1
    fe_sort = fe[np.argsort(fe[:,0])]
  • 按照矩阵的第一列排序np.argsort(x[:,0])
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    x = np.array([[9,6,5,11],[7,5,4,6],[12,9,8,10]])
    print(x)
    '''
    [[ 9 6 5 11]
    [ 7 5 4 6]
    [12 9 8 10]]
    '''
    print(x[np.argsort(x[:,0])]) #从小到大
    '''
    [[ 7 5 4 6]
    [ 9 6 5 11]
    [12 9 8 10]]
    '''
    print(x[np.argsort(-x[:,0])]) #从大到小
    '''
    [[12 9 8 10]
    [ 9 6 5 11]
    [ 7 5 4 6]]
    '''

loadtxt && savetxt

  • numpy.loadtxt
    1
    2
    numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None, *, like=None)
    numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
  • 常用参数解释:
    1
    2
    3
    4
    5
    fname #文件名
    dtype=<class 'float'> #读取数据类型
    skiprows=0 #跳过几行读取
    usecols=None #读取哪几列,例如:usecols = (1,4,5)
    max_rows=None #最大读取几行

展示输出

1
2
np.set_printoptions(threshold=100000000) #显示省略的数据
np.set_printoptions(suppress=True) #不易科学计数法输出

计算行列式

-参考:https://numpy.org/doc/stable/reference/generated/numpy.linalg.det.html

np.linalg.norm(求范数)

1
x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)

计算协方差矩阵

1
2
3
4
# numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)
X=np.array([[1 ,5 ,6] ,[4 ,3 ,9 ],[ 4 ,2 ,9],[ 4 ,7 ,2]])
print(X)
print(np.cov(X,rowvar=False))

Numpy.append

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
m1 = np.append(matrix,[[1,1,1,1]],axis=0)
# 第0维度(行)尾部添加[[1,1,1,1]],注意两个[],相同维度
print('>>>>m1>>>>\n',m1)
m2 = np.append(matrix,[[1],[1],[1]],axis=1)
# 第1维度(列)尾部添加[[1],[1],[1]],注意两个[],相同维度
print('>>>>m2>>>>\n',m2)
m3 = np.append(matrix,[1,1,1,1])
# 拉平后再尾部添加[1,1,1,1],这里可以[[1,1,1,1]]和[1,1,1,1]均可
print('>>>>m3>>>>\n',m3)

单位矩阵

1
2
3
np.identity(n) #生成n×n的单位矩阵
np.diag([1] * 4) # 生成单位对角阵
np.eye(3) # 生成单位矩阵

点乘与叉乘

1
2
#点乘直接a*b
numpy.dot(a,b) #叉乘

矩阵中字符串改为浮点数

1
2
3
4
x = np.array(['1.1', '1.2', '1.3'])
y = x.astype(np.float64)
# or
y = x.astype(float)

Math

对数函数

1
2
import math
math.log(x[, base])
  • x – 数值表达式
  • base – 可选,底数,默认为 e
  • math.log(x) 就相当于数学中的ln(x),x>0,求底数为e的对数,e = 2.718281828459;