学习Numpy,看这篇文章就够啦( 三 )

  • .tolist( ):将数组或者矩阵转换成列表
  • 但请注意深度分割函数dsplit的使用条件:
    import numpy as nparr=np.arange(12)arr.shape = (4, 3)print('n', arr)输出:
    [[ 0 1 2]
    [ 3 4 5]
    [ 6 7 8]
    [ 9 10 11]]
    print('形状改变后, ndarray arr的维度为:',arr.ndim)输出:
    形状改变后 , ndarray arr的维度为:2
    '''dsplit分割的ndarray必须是三维ndarray , 且分割的数目必须为shape属性中下标为2的值的公约数 。比如这里的分割数就是36 , 下标为2的值是4 , 符合要求'''arr = np.arange(36).reshape(3,3,4)print('创建的三维ndarrary arr为:n',arr)创建的三维 ndarrary arr为:
    [[[ 0 1 2 3]
    [ 4 5 6 7]
    [ 8 9 10 11]]
    [[ 12 13 14 15]
    [ 16 17 18 19]
    [ 20 21 22 23]]
    [[ 24 25 26 27]
    [ 28 29 30 31]
    [ 32 33 34 35]]]
    1. 排序与搜索
    书中已经介绍了6种基本函数和它们的代码演示:
    • 使用sort函数进行排序
    • 使用argsort函数进行排序
    • 使用argmax和argmin函数进行搜索
    • 使用where函数无x与y
    • 使用where函数有x与y
    • 使用extract函数进行搜索
    在这里做几点补充和说明:
    其中注意argsort函数使用的方法类似于sort , 只是返回的值不同 , 返回的是ndarray arr的下标 。
    2. 字符串操作
    Numpy的char模块提供的字符串操作函数可以运用向量化运算来处理整个ndarray , 而完成同样的任务 , Python的列表则通常借助循环语句遍历列表 , 并对逐个元素进行相应的处理 。
    Numpy的char模块提供的常用字符串操作函数具有字符串的连接、切片、删除、替换、字母大小写转换和编码调用等功能 , 可谓是十分方便 , 书上有非常详细的介绍 , 建议大家结合《Python 3智能数据分析快速入门》这本书美味食用 。
    03 ufuncufunc , 全称通用函数(universal function) , 是一种能够对ndarray中所有元素进行操作的函数 , 而不是对ndarray对象操作 。
    • ufunc的广播机制
    广播(Broadingcasting)是指不同形状的ndarray之间执行算术运算的方式 。若两个ndarray的shape不一致 , Numpy则会实行广播机制 。为了更好地使用广播机制 , 需要遵循4个原则 。原则及案例在书上第159页有详细演示 , 此处不再赘述 。
    • 常用ufunc
    常用的ufunc运算有算数运算、三角函数、集合运算、比较运算、逻辑运算和统计计算等 。书上提供了若干种常用函数 , 对ndarray中所有元素的运算来说 , 在提供了极其方便与快捷的同时 , 又囊括一切强大的功能 。相关函数及案例在书上第161页有详细演示 , 此处不再赘述 。
    04 matrix与线性代数Numpy的matrix是继承自Numpy的二维ndarray对象 , 不仅拥有二维ndarray的属性、方法与函数 , 还拥有诸多特有的属性与方法 。同时 , Numpy中的matrix与线性代数中的矩阵概念几乎完全相同 , 同样含有转置矩阵、共轭矩阵、逆矩阵等概念 。
    只要是大学期间学过《线性代数》这门课程的同学 , 对于《Python 3智能数据分析快速入门》的学习完全没有问题 , 相关专业术语及技术实现细节在本节中都有强调 。详情请从第169页开始学习 。
    05 Numpy文件读写读写文件是利用Numpy进行数据处理的基础 , Numpy中主要有二进制的文件读写和文件列表形式的数据读写两种形式 。其中二进制文件读取使用书上第175页中提到的load函数;二进制文件存储使用save和savez函数 。
    但是在实际的数据分析任务中 , 更多使用文本格式的数据 , 如txt或csv , 因此经常使用loadtxt函数执行对文本格式的数据的读取任务和savetxt函数执行对文本格式的数据的存储任务 。
    但是它们只能有效存取一维和二维数据 , 这里我再对多维数据的存取的方法进行补充:
    a.tofile(frame, sep='', format='%s')
    • frame:文件、字符串
    • sep:数据分割字符串 , 如果是空串 , 写入文件为二进制
    • format:写入数据的格式
    np.fromfile(frame, dtype=float, count=‐1, sep='')