numpy学习(处理数字性数据)
1.np.array()把内容变成数组
2.t1.dtype可以显示其类型
3.np.astype可以把类型改变
4.保存固定位的小数
np.round(range(10),3)
###数组的计算
np.shape()只有一个值是一维的,指的是有多少个元素
两个值,二维,指几行几列
三个值,三维
np.reshape((3,4))把什么变成三行四列形式
import numpy as np
t1=np.arange(32).reshape((2,4,4))
print(t1)
t1.flatten()可以快速把数据按顺序变成二维的
1.广播机制:数组与数字直接运算
2.特例:t1/0 :0/0=nan,数字/0=inf
3.数组与数组计算,长度相同时,按维度依次计算
numpy读取本地数据
numpy读取数据
np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
#np中更多的索引方式
np.where(t<10,0,10)#numpy三元运算符
如果t<10,则为0,否则为10
np.clip(10,18)#numpy的裁剪
数组的拼接
#竖直拼接
np.vstack((t1,t2))
#水平拼接
np.hstack((t1,t2))
#行交换
t[[1,2],:]=t[[2,1],:]
#列交换
t[:,[0,2]]=t[:,[2,0]]
numpy好用的方法
1.获得最大值最小值的位置
np.argmax(t,axis=0)
np.argmin(t.axis=1)
2.创建一个全为0的数组:np.zeros((3,4))
3.创建一个全为1的数组:np.ones((3,4))
4.创建一个对角线为1的正方形数组(方阵):
np,eye(3)
numpy生成随机数
numpy中的nan和inf
1.当本地文件为float的时候,有缺失时,会出现nan
或者做义工不适合的计算时
2.inf表示正无穷,-inf是负无穷
numpy
1.求和:np.sum(t3,axis=0)是计算行上的结果
axis=1是计算列上的结果
import numpy as np
t1=np.arange(12).reshape((3,4))
print(t1)
a=np.sum(t1,axis=0)
print(a)
b=np.sum(t1,axis=1)
print(b)
输出结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[12 15 18 21]
[ 6 22 38]
2.均值:np.mean(t,axis=0)
3.中值:np.median(t3,axis=0)
4.最大值:np.max(axis=0)
5.最小值:np.min(axis=0)
6.极值:np.ptp(t3,axis=0)
7.标准差:np.std(axis=0)
标准差反应数据的波动情况,越大则越分散
nan的填充
import numpy as np
def sum_nan(b):
for i in range(b.shape[1]):#遍历每一列
a=b[:,i]#当前的一列
nan_num=np.count_nonzero(a!=a)
if nan_num!=0:#说明该列有nan存在
a_not_nan=a[a==a]#输出当前一列不为nan的值
a[np.isnan(a)]=a_not_nan.mean()#把该列为nan的值,赋值为不为nan的平均值
return b
if __name__=='__main__':
t1=np.arange(12).reshape((3,4)).astype("float")
t1[1,2:]=np.nan
print(t1)
print(sum_nan(t1))