numpy的常用必掌握的知识点

数据类型numpy as np

常见的数据类型

int8/16/32/64代码类型:i1/i2/i3/i4

float16/32/64代码类型:f2/f4/f8

complex64/128代码类型:c8/16

bool代码类型:?

数据类型的操作

1创建指定数据类型的数组array:

a = np.array([1,0,1,0],dtype=np.bool)np.bool可以用“?”代替

2修改数据类型

a.astype(‘i1’) or a.astyle(np.int8)

np.round(b,2):::b是数组,2是小数部分的位数。

3查看、修改数组的形状

a.shape:查看数组的形状(有几行几列)

a.reshape(3,4):修改数组的形状(改成3行4列)

修改存在前提,必须是在数组的数量行乘列数量等于新的数组的行列乘积

b.flatten():降维

4数组的计算

1数组和数

加减乘除可以直接用,类似python的用法就相当于给数组的每一个数和这个数计算加减乘除。

2相同维度数组和数组

数组和数组对应位置的数进行单独的运算。

3不同维度数组和数组

加减

a= 2行多列;b= 1行多列

a-b:a 的每一行一行一行的减去b

乘除

同样的一行乘一行然后再乘第二行。。。

总之就是两个数组四则运算就是要求两个数组有相同的行或者列。然后按照我们最常规的一行或者一列一列的想运算。

轴(axis)

二维数组的轴:0轴列向的和1轴行向的;

三维数组的轴是0,1,2轴;

对数据的操作

0如何简单的创建一个数组

a= np.arange(12,24).rshape(3,4)

把一个从12到23 的数据改成3行4列的数据

全为0的数组:np.zero((3,4))

全为1的数组:np.ones((3,4))

对角线1的数组:np.eye(3)

1读取数据

np.loadtxt(frame,delimiter=','dtype=int,unpack=1。。。)

np.loadtxt()函数的一些参数

  1. frame文件字符串,gz,bz2压缩文件(就是文件的路径/名字)
  2. dtype:指定数组表现的类型比如int默认对于一些比较大的值会以科学计数法表示
  3. delimiter:****分割字符串默认空格,改为 **,**一般只用这个
  4. usecols:读取指定的 行,索引,元组类型,
  5. skiprows:跳过前x行,一般只跳过第一行表头。
  6. unpack就是转置默认是False(0)可以改为1
2转置数据

方法1:t.swapaxes(1,0)“这里的1,0是指0轴和1轴”

方法2:t.transpose()

方法3:t.T

3数据切片

array----数组a

1. a[1:3,1:4]

逗号前面1:3是选取1、2行

逗号后面1:4是选择1,2,3列

还可以在这个基础上加 **步长**

2. a[[1,3],:]

[[1,3]]是指1,3行

[[],[]]里面的 ‘:’是指选取所有的列

3 .a[[0,2],[1,1]]

取的是(0,1)点和(2,1)点

4数值修改

a[:2:4] =0 ====第二到第三列的所有数据都改为0

a[<10]=0 ======把小于10的数改为0

np.where(a<10,0,10)======把小于10的数改为0大于等于10 的改为10

a.clip(10,18)======小于10的改为10,大于18的改为18

5nan和inf

nan是not a numberde 的简写,就是不是一个数字

nan和任何值计算都是nan

inf是正无穷,-inf是负无穷

如何判断是不是nan?

np.isnan(a)

如何把nan改为0?

a[np.isnan(a)]=0

如何统计nan的数量(下面是非nan的数量)?

np.count_nonzero(t!=t)

np.count_nonzero(t[:, i] [t[:,i]=t[:,i]])

6,numpy常用的统计函数

求和:t.sum(axis=none)

均值:t.mean(a,axis)

中值:np.median(t,axis)

最大最:t.max(axis)小值:t.min(axis)

最大值的位置np.argmax(t.axis=?)

极值:np.ptp(t,axis)

标准差:t.std(axis)

7数组的拼接

1竖直拼接:把数据上下拼起来

np.vstack((t1,t2))

注意:要保证t1t2的每列数据有同样的意义不然就拼接没有意义

2水平拼接:把数据左右拼起来

np.hstack((t1,t2))

8数据的行列交换(类似于py基础的那种交换)

只展示行交换:t.[[1,2],:]=t[[2,1],:]

9生成随机数的方式

.rand(d0,d1…)创建d0到dn维度的随机数数组0到1之间的

randn()标准正态分布的随机浮点数,平均值是0,标准差是1

randint(low,high,(shape))最大最小值,加形状

其他注意点:

a=b不完全复制,ba相互影响

a=b[:]视图操作,会创建新的对象b但是还是会受a影响

a = b.copy()复制后,ab不相互影响


版权声明:本文为qq_64852881原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。