python数据分析(二)--Numpy

  1. n维数组对象ndarray
  2. 两部分组成--数组内容和数组属性(数组类型和数组维度)
  3. 定义一个数组方法:a=numpy.array((1,1,1))或者a=numpy.array([1,1,1])生成一个ndarray的数组a,ndarray在程序中的别名是array
  4. ndarray对象的属性
  • a.ndim 秩、维度的数量
  • a.shape ndarray对象的尺度,对于矩阵,n行m列
  • a.size 对象元素个数。n*m
  • dtype 元素类型
  • a.itemsize 对象中每个元素的大小,以字节为单位
  1. ndarray的元素类型
  • bool 布尔
  • intc 与C中int一致
  • intp 用于索引的整数
  • int8 字节长度的整数
  • int16 16位长度的整数
  • int32 32位长度的整数
  • int64 64位
  • unit8 8位无符号整数
  • unit16
  • unit32
  • unit64
  • float16
  • float32
  • float64
  • complex64 复数
  • complex128
  1. ndarray数组创建
  • 字节流(raw bytes)中创建数组
  • 从文件中读取特定格式,创建数组
  • python中列表、元组创建ndarray数组
    x= np.array(list/tuple)或者指定类型x=np.array(list/tuple, dtype=np.float32),不给出类型,自动判断
  • Numpy中函数创建ndarray数组,如:array、ones、zeros
    • np.arange(n):从0到n-1的数组
    • np.ones(shape):全为1,例如np.ones((3,6))
    • np.zeros(shape):全为0
    • np.full(shape,val):根据shape生成一个数组,每个元素都是val
    • np.eye(n):n*n的单位数矩阵
    • np..ones_like(a):根据a的形状生成一个全1的数组
    • np.zeros_like(a):根据a生成全0数组
    • np.full_like(a)
    • np.linspace(1,10,4):根据起止数据等间距地填充数据,形成数组,生成数组(1,4,7,10),若是np.linspace(1,10,4,endpoint=False),生成5个,排除10,(1,3.25,5.5,7.75)
  1. ndarray的数组操作
  • np.concatenate():将两个或多个数组合并成一个新的数组
  • .reshape(shape):例如a.reshape((3,8)) 得到的数组不改变a,生成新的数组
  • .resize(shape):例如a.resize((3,8))改变了原数组的行列
  • .swapaxes(ax1,ax2):将数组n个维度中两个维度进行调换
  • .flatten():对数组进行降维,返回折叠后的一维数组,原数组不变
  • .astype(new_type):类型转化。例如:a=np.ones((2,3,4),dtype=np.int),b=a.astype(np.float)
  • 数组向列表转化:b=a.tolist(),python基础的数据结构:列表
  • 一维数组索引:a[2],从0开始递增或者从-1开始递减
    多维数组:a[1,2,3]:位置信息,或者a[-1,-2,-3]
  • 3元素切片:a[1:4:2]:含义:起始编号:终止编号:步长
    多元素组切片:a[:,1,-3],或者a[:,1:3,:]
  1. 数组运算

    1. 数组与标量运算:作用于数组的每一个元素a = a / a.mean()
    2. 一元函数:np.abs(x)、np.fabs(x)、np.sqrt(x)、np.square(x)、np.log(x)、np.log10(x)、np.log2(x)、np.ceil(x)(不超过元素的整数值)、np.floor(x)(小于这个元素的最大整数值)、np.rint(x)(四舍五入)、np.modf(x)(小数部分和整数部分)、np.cos(x)、np.cosh(x)、np.exp(x)、np.sign(x)
    3. 二元函数:加减乘除乘方、np.maximum(x,y) np.fmax()
      np.mod(x,y) np.copysign(x,y)(将数组y各元素的符号复制给数组x对应元素) 布尔型运算
  2. adarray数组与csv文件写入与读出:
    注意:csv文件只能有效存取一维数组和二维数组

    • 写入到csv文件中
      np.savetxt(frame,array,fmt='%.18e',delimiter=None)
      frame:文件、字符串或产生器,可以是.gz或者.bz2的压缩文件,文件名
      array:存入文件的数组
      fmt:写入文件的格式:例如:%d %.2f %.18e
      delimiter:分割字符串
      例如:
      a = np.arange(100).reshape(5,20)
      np.savetxt('a.csv',a,fmt='%d',delimiter=',')
      文件保存在当前文件目录下,我的是在C盘的用户目录下,可以更改
    • 从csv文件中读出
      np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
      frame:文件名,可以是压缩文件.gz或者.bz2
      dtype:数据类型
      delimiter:分割字符串,默认位任何空格
      unpack:true,读入属性将分别写入不同变量
  3. 多维数组的存取
    注意:使用的时候要知道存入文件时数组的维度和元素类型

    1. 写到文件中:
      a.tofile(frame,sep='',format='%s')
      frame:文件、字符串
      sep:数据分割字符串、如果为空串,写入文件为二进制。
      format:写入数据的格式
      例如:
    a.tofile('b.dat',sep=',',format='%d') //此时文件中为一串有逗号分割的数字,无分组信息
    
    1. 从文件中读文件
      np.fromfile(frame,dtype=float,count=-1,sep='')
      count:读入元素的个数,-1表示读入整个文件
      sep:数据分割字符串、如果为空串,读取的文件为二进制。
      例如:
      c=np.fromfile('b.dat',dtype=np.int,sep=',') //此时c为一个一维数组
      可以使用reshape变为多维数组。
  4. 便捷的文件存取
    np.save(fname,array) //fname中以.npy为扩展名
    np.savez(fname,array) //fname中以.npz为压缩扩展名
    np.load(fname)

  5. 随机数函数--random子库

    • rand(d0,d1,..dn) 根据d0-dn创建随机数数组,浮点数[0,1),均匀分布
    • randn(d0,d1,..dn) 根据d0-dn创建随机数数组,标准正态分布
    • randint(low,high,shape):根据shape创建随机整数或整数数组,范围是[low,high)
    • seed(s) 随机数种子,s是给定的种子值
    a=np.random.randn(3,4,5)  //生成3维矩阵,维数分别是3,4,5
    b=np.random.randint(100,200,(3,4))
    
    • shuffle(a) 根据数组a的第一轴进行随机排序,改变数组a
    • permutation(a) 根据数组a的第一轴进行随机排序,不改变数组a
    • choice(a,size,replace,p) 从一维数组a中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认为true
    • uniform(low,high,size) 产生具有均匀分布的数组,low起始值,high结束值,size形状
    • normal(loc,scale,size) 产生具有正态分布的数组,loc均值,scale标准差,size形状
    • poisson(lam,size) 产生具有泊松分布的数组,lam随机事件发生率,size形状
  6. 统计函数

    • sum(a,axis=None) :给定轴axis计算和,axis整数或者元组
    • mean(a,axis=None):给定轴axis计算期望
    • average(a,axis=None,Weight=None) 给定轴axis计算数组a计算相关元素的加权平均值
    • std(a,axis=None) 计算数组a相关元素的标准差
    • var(a,axis=None) 计算数组a相关元素的方差
    • min(a)
    • argmin(a) 计算数组a中元素最小值、最大值降一维后下标
    • unravel_index(index,shape) 根据shape将一维下标index转换成多维下标
    • ptp(a) 计算数组a中元素最大值和最小值的差
    • median(a) 计算数组a中元素的中位数(中值)
  7. 梯度函数--及斜率
    np.gradient(a):返回元素的梯度,当f为多维时,返回每个维度梯度

  8. 图像的数组表示
    图像:RGB色彩表示
    PIL库:具有强大图像处理能力的第三方库
    使用:from PIL import Image
    Image是PIL库中代表一个图像的类
    im=np.array(Image.open("path+fileName"))
    print(im.shape,im.dtype)
    Image.open("E://Desktop//0.jpg").convert('L')将图像转化为灰度图

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容