Numpy——数据分析基础工具
- zeros
- ones
- diag
- arange
- linspace
- logspace
- 维度变换
- 数组拼接
- 数组分割
- 数组复制
- 矩阵运算
- 矩阵转置
- 特征值和特征向量
- 平均值
- 最值
- 中位数
- 极差
- 方差
- 协方差
- 皮尔森相关系数
#matplotlib/sea-born/pandas进行数据可视化显示
#缺失值异常值通过pandas/sklearn等进行清洗
import numpy as np
a=np.array([1,2,3])
b=np.array([[1,2],[3,4]])
c=np.array([1,2,3,4,5],ndmin=2)#最小维度
d=np.array([1,2,3],dtype=complex) #dtype参数
print(a)
print(b)
print(c)
print(d)
#运行结果#
# [1 2 3]
#[[1 2]
#[3 4]]
#[[1 2 3 4 5]]
#[1.+0.j 2.+0.j 3.+0.j]
a=np.array([[1,5],[4,5,2],3])
a5=np.array(([1,5,3,4,5],[6,2,7,9,5]))
print(type(a))
print(a)
print(a5)
print(a.dtype)#查看每个元素的类型
print(a5.dtype)
print(a.shape)#查看数组的行列
print(a5.shape)
print(a.shape[0])#查看行数
print(a5.shape[1])#查看列数
print(a.ndim)#获取数组的维数
print(a5.ndim)
print(a5.T)#简单转置矩阵
#numpy.zeros
#默认为浮点数
x=np.zeros(5)
print(x)
#[0.0.0.0.0.]
#设置数据类型为整数
y=np.zeros((5,),dtype=np.int)
print(y)
#[0 0 0 0 0]
#自定义类型
z=np.zeros((2,2),dtype=[('x','i4'),('y','i4')])
print(z)
#[[(0,0),(0,0)]
#[(0,0)(0,0)]]
#numpy.ones
x=np.ones(5)
print(x)
#[1.1.1.1.1.]
x=np.ones([2,2],dtype=int)
print(x)
#[[1,1]
#[1,1]]
#diag对角矩阵
x=np.diag([1,2,3])
print(x)
#[[1,0,0]
#[0,2,0]
#[0,0,3]]
#arange
a=np.arange(10)
print(a)
a5=np.arange(1,2,0.1)#范围是1-2,布长为0.1
print(a5)
#创建指定数量间隔的数列
a=np.linspace(0,1,10)#从0开始到1结束,共10个数的等差数列
print(a)
#logspace生成等比数列
a=np.logspace(0,1,5)#生成首位为10的0次方,末位为10的1次方,含5个数的等比数列
#arr:要修改形状的数组
#newshape:整数或整数数组新形状
#order:‘C'为C风格顺序,'F'为F风格顺序,'A'为原顺序
a=np.array([1,2,3,4,5])
b=np,reshape(2,3)
c=np.reshape((2,3))
c=np.reshape(a,(2,3))
print(a)#[1,2,3,4,5]
print(b)#[[1 2 3] [4 5 6]]
print(c)#[[1 2 3] [4 5 6]]
print(d)#[[1 2 3] [4 5 6]]
#flatten数组降维
a=np.array([[1,2,3],[4,5,6]])
b=a. flatten()
c=a.ravel()#多维转一维
d=a.reshape(-1)#参数为-1,表示数组的维度通过数据本身判断
print(a)#[[1 2 3][4 5 6]]
print(b)#[1 2 3 4 5 6]
print(c)#[1 2 3 4 5 6]
print(d)#[1 2 3 4 5 6]
#swapaxes将数组n个维度中两个维度进行调换
a=np.array([[1 2 3],[4 5 6]])
b=a.transpose()
c=a.T
d=a.swapaxes(0,1)
e=np.transpose(a,(1,0))
print(a)#[[1 2 3][4 5 6]]
print(b)#[[1 4][2 5][3 6]]
print(c)#[[1 4][2 5][3 6]]
print(d)#[[1 4][2 5][3 6]]
print(e)#[[1 4][2 5][3 6]]
#数组拼接
#hstack横向拼接
a=np.arange(6).reshape(3,2)
b=a*2
c=np.hstack((a,b))
print(a)
print(b)
print(c)
#[[0 1]
#[2 3]
#[4 5]]
#[[0 2]
#[4 6]
#[8 10]]
#[[0 1 0 2]
#[2 3 4 6]
#[4 5 8 10]]
#vstack纵向合并
a=np.arange(6).reshape(3,2)
b=a*2
c=np.vstack((a,b))
print(a)
print(b)
print(c)
#[[0 1]
#[2 3]
#[4 5]]
#[[0 2]
#[4 6]
#[8 10]]
#[[0 1]
#[2 3]
#[4 5]
#[0 2]
#[4 6]
#[8 10]]
#concatenate横向纵向合并(数组要求:1.相同维度的数组2.除了axis外,其余维度对应相等)
a=np.array([[1 2 3],[4 5 6]])
b=np.arange(2 8).reshape(2,3)
c1=np.concatenate([a,b],axis=0)
d1=np.concatenate([a,b],axis=1)
print(a)#[[1 2 3][4 5 6]]
print(b)#[[2 3 4][5 6 7]]
print(c1)#[[1 2 3][4 5 6][2 3 4][5 6 7]]
print(d1)#[[1 2 3 4 5 6][4 5 6 5 6 7]]
#数组分割 vsplit按行分割 hsplit按列分割
a=np.arange(1,19).reshape(6,3)
b,c=np.split(a,[4],axis=0)#灵活分割,列不够4
d,e=np.vsplit(a,[4])##前4行和余下的
#数组复制
a=np.array([1,2,3])
b=a
c=a[:]
d=np.copy(a)
print(b is a,c is a,d is a)#输出TURE OR FALSE
d[0]=10
print(a,d)#a不变d变
c[0]=100
print(a,c)#a,c都变
#索引和切片
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a)
print(a[:])#选取全部元素
print(a[1])#选取行为1的元素即第二行的元素
print(a[0:1])#截取[0,1)元素
print(a[1,2:5])#截取第2行第[2,5)的元素
print(a[1,:])#截取第2行的元素
print(a[1,2])#截取第行号为1列号为2元素,即7
#按条件截取
print(a[a>5])#截取矩阵a中大于5的数,范围是一维数组
print(a>5)#比较a中的元素是否大于5,输出值False或True
a[a>5]=0#将矩阵中大于5的元素替换为0
print(a)
x=slice(1)
print(a[x])
import numpy as np
import numpy.linalg as lg#求矩阵的逆首先要导入numpy.linalg
a1=np.array([[1,2,3],[4,5,6],[5,4,5]])
a5=np.array([[1,5,4],[3,4,7],[7,5,6]])
print(a1+a5)#相加
print(a1-a5)#相减
print(a1/a5)#对应元素相除,如果都是整数则取商
print(a1%a5)#对应元素相除后取余
print(a1**5)#矩阵每个元素都取n次方
print(a1.dot(a5))#矩阵a1 a5相乘
print(a1.transpose())#等价于a1.T
print(lg.inv(a1))#用linalg的inv()函数来求逆
print(np.linalg.eig(a1))#求矩阵的特征值和特征向量
x=np.array([160,156,157,284,379,290,198,109,189])
mean=np.mean(x)#求均值
print(mean)
min=np.min(x)#求最小值
max=np.max(x)#求最大值
median=np.median(x)#求中位数
ptp=np.ptp(x)#求极差
var=a1.var()#求方差
cov=np.cov(x)#求协方差
correlation=np.corrcoef(a1,a5)#计算皮尔森相关系数