pthon数据

pthon数据

标签(空格分隔): Python


ndarray数组的维度变换

.reshape(shape):不改变数组元素,返回一个shape形状的数组,原数组不变

.resize(shape):与.reshape功能相同,但是改变原数组的

.swapaxes(ax1,ax2):将数组n个维度中两个维度进行调换

.flatten():对数组进行降维,返回折叠后的一维数组,原数组不变

数组的类型变换

new_a=a.astype(new_type):改变元素类型,程序自动调节np.int不同具体到int8,int16,int32;
.astype实际上做的是一个复制,即使新的类型与原来的类型一样,也复制了一份

ndarray数组向python列表的转变

ls=a.tolist()

数组的索引与切片

一维数组

a=np.array([9,8,7,6,5])
a[2]
7
python列表的两种索引方法在这里都可以用
a[1:4:2]
array([8,6])
[起始编号:终止编号(不含):步长]

多维数组的索引

a=(

    [[0,1,2,3],
    [4,5,6,7],
    8,9,10,11]],

    [[12,13,14,15],
    [16,17,18,19],
    [20,21,22,23]]
)

a[1,2,3]
23

a[-1,-2,-3]
17

多维数组切片

a=(

    [[0,1,2,3],
    [4,5,6,7],
    8,9,10,11]],

    [[12,13,14,15],
    [16,17,18,19],
    [20,21,22,23]]
)

a[::,0:2,::]
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[12, 13, 14, 15],
[16, 17, 18, 19]]])

多维数组的切片和一维数组切片在每一个维度上都一样,每个维度之间用逗号隔开

ndarray数组的运算

数组与标量之间的运算

相当与数组中的每一个元素都与该标量进行运算

a=(

    [[0,1,2,3],
    [4,5,6,7],
    8,9,10,11]],

    [[12,13,14,15],
    [16,17,18,19],
    [20,21,22,23]]
)

a.mean()//a的算数平均值
11.5
a/a.mean()
array(
[[[ 0. , 0.08695652, 0.17391304, 0.26086957],
[ 0.34782609, 0.43478261, 0.52173913, 0.60869565],
[ 0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

   [[ 1.04347826,  1.13043478,  1.2173913 ,  1.30434783],
    [ 1.39130435,  1.47826087,  1.56521739,  1.65217391],
    [ 1.73913043,  1.82608696,  1.91304348,  2.        ]]])

一维数组的一元函数

np.abs()/np.fabs()//计算数组各元素的绝对值
np.sqrt()//计算数组各元素的平方根
np.square()//计算数组各元素的平方
np.log()/np.log10()/np.log2()//计算数组各元素的自然对数,10为底和2为底的对数
np.ceil()/np.floor()//计算数组各元素的ceiling值和floor值(ceil表示不超过的整数值,floor表示小于这个数的最大整数值)
np.rint()//四舍五入值
np.modf()//将数组的小数和整数部分以两个数组的形式返回
np.cos()/np.cosh()/np.sin()/np.sinh()/np.tan()/np.tanh()//计算数组各元素的普通型和双曲三角函数
np.exp()//指数值
np.sign()//计算数组各元素的符号值,+(1),-(-1),0
一元函数运算一定要注意数组是否被只是改变

Numpy二元函数

+,-,,/,*//加减乘除乘方(两个数组对应元素相加)
np.maximum(x,y)/np.minimum(x,y)//元素级的最大最小值(数据类型不同的话选用精度高的)
np.mod(x,y)//元素级的模运算
np.copysign(x,y)//将数组Y中的各元素的符号赋值给数组x的对应元素
<,>,>=,<=,==,!=//算数比较,产生布尔型数组

数据的CSV文件的存取

写入

np.savetxt(frame,array,fmt=’%.18e’,delimiter=None)
frame:文件、字符串或者产生器,可以是.gz或.bz2的压缩文件。
array:存入的数组
fmt:写入文件中每个元素的格式,%d %.2f %.18e(默认)
delimiter:分割字符串,默认空格,由于Numpy使用逗号,所以要改为逗号

读入

np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
frame:文件、字符串或者产生器,可以是.gz或.bz2的压缩文件
umpack:如果为Ture,读入属性讲分别写入不同的变量

csv文件局限性,只能有效存储一维和二维数组

多维数组的存取

写入

a.tofile(frame,sep=”,format=’%s’)
sep:数据分割字符串,如果是空串,写入文件为二进制
format:数据写入格式

读入

fromfile(frame,dtype=float,count=-1,sep=”)
count:读入元素的个数
sep:如果为空,表示为二进制文件

Numpy的便捷文件存取

np.saave(fname,array)/np.savez//存储文件默认以.npy为扩展名,压缩扩展名为.npz
np.load(fname)//与上相同

Numpy随机数函数

Numpy中的random子库

  • rand(d0,d1,d2,~,dn):根据d0-dn创建随机数数组,浮点数,[0,1),均匀分布,d1~dn是表示维度
  • randn(d0,d1,~,dn):创建随机数组,标准正态分布,对称轴为0
  • randint(low,high,shape):根据shape创建随机整数或随机数数组,范围是[low,high]
  • seed(s):随机种子,s是给定的种子值

高级随机数函数

  • shuffle(a):根据数组a的第一轴进行随机排列,改变数组x
    不产生新的数组,所以不能进行赋值操作,不会返回数组
  • permutation(a):与shuffle功能相同,不改变数组x
  • choice(a,size,replace,p):replace默认为False,表示不可以重复从a中抽取

np.random中的分布随机函数

  • uniform(low,high,size):均匀分布,size形状,范围[low,high]
  • normal(loc,scale,size):正态分布,loc均值,scale标准差,size形状(均值为对称轴,标准差为幅度)
  • poisson(lam,size):泊松分布,lam随机事件发生概率

np的统计函数

  • sum(a,axis=None):求和函数,axis表示指定维度求和
  • mean(a,axis=None):数学期望
  • average(a,axis=None,weight=None):加权平均值
  • std(a,azis=None):标准差
  • var(a,axis-None):方差
  • min(a)/max(a):最大最小值
  • argmin(a)/argmax(a):最大最小值下标
  • unravel_index(index,shape):根据shape将一维index转换为多维下标
  • ptp(a):最大最小值得差
  • median(a):中位数

Numpy的梯度函数

  • np.gradient(f):梯度:斜率

图像的数组表示

  • RGB数组表示
  • PIL库,Python Image Library 处理图像的专业库
    pip install pillow

    from PIL import Image(类)

    图像是一个由像素组成的二位矩阵,每个元素是RGB值

    from PIL import Image
    import Numpy as np
    im=np.array(Image.open(“D:/beijing.jpg”))
    print(im.shape,im.dtype)

图像的变换

Eg:
from PIL import Image
import Numpy as np
a=np.array(Image.open(“D:/beijing.jpg”))
b=[255,255,255]-a
im=Image.fromarray(b.astype(‘uint8’))
im.save(“D:/beijing2.jpg”)

  • 主要变换在于b=[255,255,255]-a这句话
  • a=np.array(Image.open(“D:/beijing.jpg”).convert(‘L’))这句话能将原来彩色图片对应的三维数组变为二位数组,即将彩色图片变为灰度图片

plt的plot函数

plt.plot(x,y,format_string,**kwargs)

  • x:x轴数据
  • y:y轴数据
  • format_string:控制曲线的格式字符串
  • **kwarges:第二组或更多(X,Y,format_string

绘制多条曲线

    a=np.arange(10)
    plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
    plt.show()

format_string:颜色字符+风格字符+标记字符

  • 颜色字符:’b’蓝色/’r’红色
  • 风格字符:’-‘实线/’–’破折线/’-.’点划线/’:’虚线/””无条线
  • 标记字符:’.’/’,’/’o’/’v’/’^’/’*’/’s’
    plt.plot(a,a*1.5,'go-',a,a*2.5,'rx-',a,a*3.5,a,a*4.5)

pyplot的中文显示

matplotlib.rcParams[]:(全局)

  • font.familyc:字体名
  • font.style:字体风格,正常‘normal’,斜体’italic’
  • font.size:字体大小,整数字号或’large’/’X-small’
matplotlib.rcParams[font.family]='STSong'
matplotlib.rcParams[font.size]=20

fontproperties属性(局部)

plt.xlabel('时间',fontproperties='SimHei',fontsize=20)
plt.ylabel('振幅',fontproperties='SimHei',fontsize=20)

文本显示

  • plt.xlabel():x轴文本
  • plt.ylabel():y轴文本
  • plt.title():图形整体
  • plt.text():任意位置,(X,Y)指定文本位置
  • plt.annpotate(s,xy=arrow_crd,xytext=text,arrowprops=dict)

在图形中增加带箭头的注视,s表示注解字符串,xy箭头所在位置,xytext文本显示位置,dict属性

import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.xlabel('时间',fontproperties='SimHei',color='green')
plt.ylabel('振幅',fontproperties='SimHei',color='green')
plt.title('正弦函数图像',fontproperties='SimHei',color='green')
plt.text(2,1,)
plt.axis(-1,6,-2,2)
plt.grid(Ture)//加入网格曲线
plt.show()

pyplot子绘图区域

plt.subplot2grid(GridSpace,CurSpec,colspan=1,rowspan=1)

plt.subplot12grid((3,3),(1,0),colspan=2)

GridSpec类

from matplotlib import gridspec
gs=gridspec.GridSpec(3,3)
ax1=plt.subplot(gs[0,:])
ax2=plt.subplot(gs[1:,-1])

#pyplot基础图表函数
+ plt.plot(x,y,fmt,):坐标图
+ plt.boxplot(data,notch,position):箱形图
+ plt.bar(left,height,width.botton):条形图
+ plt.barh(width,bottom,left,height):横向条形图
+ plt.polar(theta,r):极坐标图
+ plt.pie(data,explode):饼状图
+ plt.psd(x,NFFT=256,pad_to,Fs):功率谱密度图
+ plt.specgram(x,NFFT=256,pad_to,F):谱图
+ plt.cohere(x,y,NFFT=256,Fs):X-Y相关性函数
+ plt.scatter(x,y):散点图
+ plt.step(x,y,where):步阶图
+ plt.hist(x,bins,normed):直方图
+ plt.conture(X,Y,Z,N):等值图
+ plt.vlines():垂直图
+ plt.stem(x,y,linefmt,markerfmt):柴火图
+ plt.plot_date():数据日期
#饼图绘制

import matplotlib.pyplot as plt
labels='Frogs','Hogs','Dogs','Logs'
size=[15,30,45,60]
explode=(0,0.1, 0,0)
plt.pie(size,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90)
plt.show()

直方图绘制

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
mu,sign=100,20
a=np.random.normal(mu,sign,size=100)
plt.hist(a,20,normal=1,histtype='stepfilled',facecolor='b',alpha=0.75)//20表示直方的个数
plt.title('Histogram')
plt.show()

极坐标图

import numpy as np
import matplotlib.pyplot as plt

N=20
theta=np.linspace(0.0,2*np.pi,N,endpoint=False)
radii=10*np.random.rand(N)
width=np.pi/4*np.random.rand(N)

ax=plt.subplot(111,projection='polar')
bars=ax.bar(theta,radii,width=width,bottom=0.0)

for r,bar in zip(radii,bars):
    bar.set_facecolor(plt.cm.viridis(r/10.))
    bar.set_alpha(0.5)

plt.show()

padas中的Series类

  • 自动索引
import pandas as pd

a=pd.Series([9,8,7,6])

a
Out[4]: 
0    9
1    8
2    7
3    6
dtype: int64
  • 自定义索引
import pandas as pd 
b=pd.Series([9,8,7,6],index=['a','b','c','d'])
b
Out[8]: 
a    9
b    8
c    7
d    6
dtype: int64

##创建类型

  • 标量

    s=pd.Series(25,index=['a','b','c'])
    s
    Out[10]: 
    a    25
    b    25
    c    25
    dtype: int64
    • 字典
d=pd.Series({'a':9,'b':8})
d=pd.Series({'a':9,'b':8,'c':7},index=['c','a','b'])
  • ndarray
a=pd.Series(np.arange(5),index=np.arange(9,4,-1))
  • 列表

基本操作

d.index
Out[15]: Index(['b', 'sunhanwu'], dtype='object')
d.value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值