zoukankan      html  css  js  c++  java
  • Numpy 基础知识

      

    1、使用ipython --pylab 自动加载 Numpy、Scipy、Matplotlib模块。

    创建数组
    a = arange(10)
    b = arange(10,dtype='f')
    c = arange(10,dtype=inti)
    创建多维数组
    b = array([arange(3),arange(3)]) 使用array创建数组时,默认指定了数据类型——浮点型
    c = array([[1,2],[3,4]])(创建的是2维数组)
    b = arange(10).reshape(2,5)
    查看数组数据类型
    a.dtype

    查看数组每个维度的大小(是元组形式,每个数字代表一个维度内元素的个数。几个数字代表几维)
    a.shape
    查看数组维度个数
    a.ndim
    数组元素个数
    a.size
    数组单个元素在内存中所占大小
    a.itemsize
    整个数组所占大小
    a.nbytes
    查看单个元素所占字节数
    a.dtype.itemsize

    转置数组
    a.T 效果和 transpose()一样

    复数数组中元素的实部
    b.real
    复数数组中元素的实部
    b.imag
    遍历数组元素
    b.flat 会生成一个flatiter对象。是一个可迭代对象。可以迭代访问数组内的元素。
    b.flat[2] 直接获取元素
    b.flat[1,4]
    b.flat = 7 直接导致所有数组内元素值的改变,此例中所有元素变为7 #原地改变
    b.flat[0] = 9

    numpy数组转为列表
    b = a.tolist()
    转换数组数据类型
    b = a.astype(str)

    所有数据类型
    sctypeDict.keys()

    数据类型对象是numpy.dtype类的实例。
    c = dtype('Floa64')
    查看数据类型的字符编码
    c.char
    查看数据类型
    c.type


    创建自定义的数据类型。
    a = dtype([('name',str_,40),('numitem',int32),('price',float32)])
    b = array([('aa',40,2.13),('bb',23,2.6)],dtype=a)

    切片和索引
    一维数组:和python的列表切片相同
    [:] :,表示从开始到结束
    [2:7] 表示从2到7
    [::-1] 反转数组
    多维数组:维度和维度之间用",",表示。每一个维度,和python的列表切片差不多
    下面的实例中 b 为一个三维数组。

    b[0,0,0] 从左到有,分别对应着从外层到内层的每一层数组。
    b[:,0,0] : 表示全选该层的所有数组
    b[0,:,:] 选取最外层数组的第一个元素。其包含所有的元素都选中
    b[0,...] 多个 : 可以用...(三个英文 . 表示)
    b[0,:,::2] 选取第一层下的第一个元素。上一个元素下层的所有元素,上层所有元素的每个再下层元素的个别元素(步长为2,进行选择)
    b[:,1,:] 选取所有第二层的数据
    b[:,1] 最后一个全选,那么可以忽略不写
    b[::-1,::-1,:-1,] 反选所有元素


    修改数组维度(所有维度大小相乘等于总的元素数)
    b = a.reshape(2,3,4)
    b.shape = (4,3,2) #原地改变数组维度
    b.resize((2,12)) #原地改变数组维度
    平展数组
    a = b.ravel()
    a = b.flatten()

    转置矩阵
    c = b.transpose() #对于二维数组来说就是横纵行调转

    组合数组
    a,b 两个数组维度一样。元素个数一样。
    hstack((a,b)) 水平组合。对于二维数组来说就是两个数组左右拼接在一起。
    concatenate((a,b),axis=1) 同上。
    vstack((a,b)) 垂直组合。对于二维数组来说就是两个数组上下拼接在一起。
    concatenate((a,b),axis=0)
    dstack((a,b)) 深度组合。沿纵轴(深度)方向进行层叠组合。
    columen_stack((a,b)) 列组合,对于一维数组来说是按列方向组合。对于二位数组来说和hstack效果一样
    row_stack((a,b)) 行组合。对于一维数组来说是将两个数组上下拼接起来,对于二维数组和vstack效果一样。

    数组分割
    将一个数组分割成小的数组。
    hsplit(a,3) 水平分割,将数组 a 水平分割成 3 个子组。#备注:我看效果,总感觉是沿垂直分割的
    split(a,3,axis=1) 同上
    vsplit(a,3) 垂直分割,将数组 a 垂直分割成 3 个子组。#备注:总感觉是水平分割
    splist(a,3,axis=0)同上
    dsplit(a,3)

  • 相关阅读:
    利用Bootstrap快速搭建个人响应式主页(附演示+源码)
    Socket实现仿QQ聊天(可部署于广域网)附源码(2)-服务器搭建
    Socket实现仿QQ聊天(可部署于广域网)附源码(1)-简介
    开拓思维,如何用编程思想进行三维建模(2)
    开拓思维,如何用编程思想进行三维建模(1)
    浅谈Winform事件的实现以及模拟其事件的实现(附实现源码)
    Winform实现Shp-栅格图形文件的读取与显示(外加shp转WKB格式存入oracle)附源码
    本地MVC项目发布到IIS服务器
    Asp.net mvc4 安装报错处理方法(x80070005 拒绝访)
    MySql 主从复制及主主复制
  • 原文地址:https://www.cnblogs.com/jijizhazha/p/6741969.html
Copyright © 2011-2022 走看看