python数据分析学习numpy库
numpy:对数组进行计算
介绍:中文手册:https://www.numpy.org.cn/
- 功能强大的N维数组对象。
- 精密广播功能函数。
- 集成 C/C+和Fortran 代码的工具。
- 强大的线性代数、傅立叶变换和随机数功能。
import numpy
# numpy的版本号
numpy.__version__
numpy的核心是ndaray对象,n维数组
#创建列表
list=[1,3,5,8,3,5,9]
print(type(list))
# 转为ndaray,ndaray的方法很多
np_list=numpy.array(list)
print(type(np_list))
ndaray中多种多样的计算方法,运行速度快底层是C,C++
# 计算np_list中数的方差
np_fc=np_list.var()
print("np_list的方差:{}".format(np_fc))
ndaray创建方法
# 创建全为1的二阶等阶矩阵
np_list1=numpy.ones(shape=(4,4), dtype=numpy.int8)
np_list1
# 创建全为0的三阶等阶矩阵
np_list2=numpy.zeros(shape=(4,3,3),dtype=numpy.float16)
np_list2
#创建值为任意值的二维数组
np_list3=numpy.full(shape=(2,2), fill_value=3.2, dtype=numpy.float)
np_list3
#创建单位矩阵(对角线全为1,其他位置为0)
np_list4=numpy.eye(N=4,dtype=numpy.int8)
np_list4
#创建等差数列(从0-100,共20个数)
np_list5=numpy.linspace(start=0, stop=100, num=20)
np_list5
#创建标准正态分布数组,平均值是0,方差为1
np_list6=numpy.random.randn(3,3)
np_list6
#创建一般正态分布数组,平均值170.00,方差为6,共20个数
np_list7=numpy.random.normal(loc=170, scale=6, size=20000).round(2)
np_list7
np_list7_mean=np_list7.mean().round(2)
np_list7_var=np_list7.var().round(2)
np_list7_std=np_list7.std().round(2)
print("身高的平均值:{};方差:{};标准差:{}".format(np_list7_mean,np_list7_var,np_list7_std))
ndarray的属性
np_list1_pro={}
np_list1_pro["元素个数"]=np_list1.size
np_list1_pro["行列"]=np_list1.shape
np_list1_pro["维度"]=np_list1.ndim
np_list1_pro["元素类型"]=np_list1.dtype
print(np_list1_pro)
基本操作
#根据索引找数据第三行第三列
#根据切片找第二行到第四行,第一列到第三列的所有数据
np_list8=numpy.random.randint(1,20,size=(4,5))
print(np_list8)
print("第三行,第三列:{}".format(np_list8[2,2]))
print("从第二行到第四行,第一列到第三列:\n{}".format(np_list8[1:4,0:3]))
#将数组变形
np_list8_2=np_list8.reshape(2,10)
#将数组转置,宽0,高1
np_list8_3=numpy.transpose(np_list8,axes=(1,0))
print(np_list8)
print(np_list1.shape)
print("变换矩阵:\n{}".format(np_list8_2))
print("转置矩阵:\n{}".format(np_list8_3))
# 拼接两个数组
numpy.concatenate([np_list8,np_list8])
from PIL import Image
import numpy
img=Image.open(r"D:\Python\代码\Data-Analysis\timg.jfif")
img
img_ndarry=numpy.array(img)
img_ndarry_pro={}
#图片三个维度:高,宽,像素(3个表示一种颜色)
img_ndarry_pro["行列"]=img_ndarry.shape
img_ndarry_pro["高度"]=str(img_ndarry_pro["行列"][0])+"px"
img_ndarry_pro["宽度"]=str(img_ndarry_pro["行列"][1])+"px"
#uint8只能表示256个数据,只有正数
img_ndarry_pro["元素数据类型"]=img_ndarry.dtype
print(img_ndarry_pro)
#修改图片颜色,将颜色翻转
#通过数组读取图片
Image.fromarray(img_ndarry[:,:,-1])
import matplotlib.pyplot as plt
plt.imshow(img_ndarry[::8,::8])
plt.imshow(img_ndarry)
img_ndarry_1=img_ndarry[50:,:280]
img_ndarry_2=img_ndarry[50:,390:501]
#拼接两个图片按照宽度1
img_ndarry_new=numpy.concatenate([img_ndarry_1,img_ndarry_2],axis=1)
plt.imshow(img_ndarry_new)
numpy.concatenate()