numpy简单解析
此博客仅是我平时学习遇到的一些小代码
导入函数库
import numpy as np
np. sum (x)
x. max ( )
各种函数解析
产生数据
np.random.uniform(-1,1,3) #在[-1,1)内随机输出三个数,那个3也可以换成(2,3)生成2行3列的矩阵
np.arange(x,y,z) #生成一个[x,y)的列表,步长为z
np.linspace(x,y,z,endpoint=True) #在[x,y]内生成z个等间距数,endpoint为false时不包含末端点。默认为true
np.random.rand(10) #生成10个[0,1)内的随机数,并且可以控制形状一维,二维,N维,维度用数字隔开就好。
np.random.randint(a,b,c) # #a:最小值,b:最大值,在[a,b)内随机生成。 c:是一个区间,生成矩阵,可以用c调控维数 例:(2,3)2行3列
np.random.randn(10) #返回一个一维矩阵,里面有十个数,具有标准正态分布
np.random.randn(4,3) #返回一个矩阵,四行三列。
np.logspace(x,y,z,endpoint=ture,base=2) #起始值为2的x次方,末尾为2的y次方,共z个数。base默认为10
np.loadtxt('ABC.txt', delimiter='\t', skiprows=2, usecols=(2, 3, 4, 5), unpack=True)
#ABC.txt为文件路径,delimiter为不同列的间隔符,skiprows为跳过的行数,usecols为需要读取的列数,unpack如果是True,则分列读取
np.ones_like(x) #生成一个和x同类型的矩阵,不过内部全为1
np.zeros() #生成全为0的矩阵
np.random.poisson(lam=5, size=10000) #生成泊松分布的一堆数。
np.vstack(a,b) #将矩阵a和b沿行合二为一
np.hstack(a,b) #将a,b沿列合二为一
1.np.matmul 两个矩阵相乘
np.multiply 数与矩阵相乘
np.square计算元素平方
2.np.array(a) 将列表a变为矩阵
3.np.average() 获取矩阵的平均值,返回值为float
4.np.exp(a) e的a次方
5.np.dot(a,b) a和b矩阵相乘
6.np.abs() 求绝对值
7.a.shape函数,读取矩阵形状
a.reshap(β,θ)#将数组a变换成β行θ列。如果其中一个为-1的话,那么矩阵形状就和另一个数有关。-1这个位置的数为矩阵内元素总个数除以另一个数
8.a.T 矩阵转置
9.np.append(a,b,axis=0) 将值附加到数组的末尾。此时是矩阵相加。当axis是1的时候,是矩阵相同行合在一个[ ]内
np.concatenate((t1, t2…),axis=0),将t1和t2和一块。沿0轴矩阵相加,1轴是矩阵相同行相加。
append只能作用于两个矩阵,concatenate可以作用于好多矩阵。
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=np.array([[1,2,3],[4,5,6],[7,8,9]])
c=np.append(a,b,axis=0)
d=np.append(a,b,axis=1)
print(c)
print(d)
#输出
[[1 2 3]
[4 5 6]
[7 8 9]
[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3 1 2 3]
[4 5 6 4 5 6]
[7 8 9 7 8 9]]
矩阵切片:
a=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
>>>a[:2,2] #逗号为不同维度的分割符
([3,6])
>>>a[:2,:1]
>([1,4])
>>>a[:2,:]
([1,2,3],[4,5,6])
>>>a[ : ,1 ]
([2,5,8])
广播
一个矩阵直接和一个数加减乘除,等于其内每一个数和它加减乘除。
#原理就是广播
a = np.arange(0, 60, 10).reshape((-1, 1)) + np.arange(6)
print(a)
[[ 0 1 2 3 4 5]
[10 11 12 13 14 15]
[20 21 22 23 24 25]
[30 31 32 33 34 35]
[40 41 42 43 44 45]
[50 51 52 53 54 55]]
10.np.random.shuffle(x) 现场修改序列,改变自身内容。(类似洗牌,打乱顺序)
np.random.permutation(x) 返回一个随机排列,不改变自身内容
11.np.power(x,y) #矩阵x的y次方,矩阵相同部位相计算
12.np.linalg.inv():矩阵求逆
np.linalg.det():矩阵求行列式(标量)
13.np.repeat(a,b,axis= 1 or 0) #a是一个矩阵,b是一个数,作用是将a复制几个。沿0轴的话是完全将a复制b个。1轴是将a中每个元素复制b个
14.a.flatten(),a.ravel() #将任意数组变成一维数组
15.cumsum 矩阵内元素累加 a. cumsum( ) [返回结果还是一个一维矩阵,每个位置为从这个元素开始和前面元素累加的和]
cumprod 累乘
16.np.meshgrid(x, y) #画网格,x,y是两个矩阵,效果就是将以各个(x,y)为点画格子。
17.np.tile(y,t) #y为代输入数组,t为y的重复次数,不换行,重复部分还在这一行,维数不变。 T也可以为(m,n),表示每行重复n次,怼m行。
18.np.rint() #四舍五入取整
np.ceil() #向上取整。
19.后缀函数:.astype(‘类型’) #修改数据类型。
20.np.linalg.svd #返回值为三个矩阵,第一三各为奇艺矩阵,第二个为特征值组成的矩阵。
21.w=np.ployfit(x,y,z) #x,y为个数相同的矩阵,z为一个数。函数表示求出y与x的方程解析式的值的数,z为最高次方。(所以说仅限于2维曲线)
22.np.split(data, (4,), axis=1) #可以将data分为2分,前一份占四列,其余的在后面。
23.np.count_nonzero(a) #返回a内非零元素有几个。
w=np.ployfit(x,y,z)
m=np.poly1d(w)
z=m(x)
#或者
w=np.ployfit(x,y,z)
np.polyval(w,x)
3D区
np. ogrid [-3:3:100j] #从-3,3生成100个等间距数。
x, y = np.ogrid[-3:3:100j, -3:3:100j]
u = np.linspace(-3, 3, 101)
x, y = np.meshgrid(u, u)
z = x*y*np.exp(-(x**2 + y**2)/2) / math.sqrt(2*math.pi)
z = x*y*np.exp(-(x**2 + y**2)/2) / math.sqrt(2*math.pi)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=5, cstride=5, cmap=cm.coolwarm, linewidth=0.1) #
ax.plot_surface(x, y, z, rstride=5, cstride=5, cmap=cm.Accent, linewidth=0.5)
plt.show()
np.histogramdd(x,bins=m)

浙公网安备 33010602011771号