美文网首页
《利用Python进行数据分析》-2 Numpy

《利用Python进行数据分析》-2 Numpy

作者: Yayamia | 来源:发表于2022-08-27 18:11 被阅读0次

    Numpy的特点:

    • 基于ndarray
    • 用于对整组数据进行快速运算的标准数学函数(无需编写循环)

    ndarray

    • N dimensions array, N维数组对象
    • ndarray是一个同构数据多维容器,也就是其中的所有元素都必须是相同类型的。每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)


    • 可以通过astype把数组从一个dtype转换成另一个dtype


    • 数组 = Numpy数组 = ndarray

    创建ndarray

    • 最简单的方法就是使用array函数,它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。


    • 嵌套序列(比如一组登场列表组成的列表)将会被转换成一个多为数组
    • 除非也别说明,np.array会尝试为新建的这个数组推断出一个较为合适的数据类型。数据类型保存在一个特殊的dtype对象中。
    • 其他创建数组的方式:
      np.zeros()
      创建时需要传入一个表示形状的元组
      np.arange():相当于range(),不过返回的是数组而不是列表

    Numpy数组的运算

    • 特点:不用编写循环就可以对数组执行批量计算,即矢量化(vectorization)。大小相等的数组之间的任何运算都会将运算应用到元素级。
    • 数组与标量的运算会将标量值传播到各个元素
    • 大小相同的数组之间的比较会布尔值数组

    Numpy数组的索引和切片

    • 一维数组和list差不多,不同之处在于:数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接放映到源数组上。


    • 如果你想要得到的是ndarray切片的一份副本而不是视图,需要明确进行复制操作,如arr[6:9].copy()
    • 多维数组的索引


    • 多维数组的切片



    • 布尔型索引



      布尔型索引的长度必须跟被索引轴长度一致

    ~操作符用来反转条件很好用

    也可以使用布尔条件的组合



    注意:python关键词and or在布尔型数组中无效,需要用& 与 |

    设值
    • 花式索引(Fancy indexing)


      注意:花式索引和切片不一样,它总是将数据复制到新的数组中

    数组转置和轴对换

    转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)。数组不仅有Transpose的方法,还有一个特殊的T属性。


    通用函数

    即(ufunc)是一种对ndarray中的数据执行元素级运算的函数。你可以将其看做简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器


    1661572471(1).png

    可以接受2个数组的称为二元ufunc,结果返回一个数组

    将条件逻辑表述为数组运算

    np.where函数是三元表达式x if condition else y的矢量化版本


    np.where的第二个和第三个参数不必是数组,它们都可以是标量。在数据分析工作中,where常用于根据另一个数组而产生一个新的数组

    Numpy的数学统计方法


    arr.mean(1)是计算行的平均值;arr.mean(0)是计算列的平均值

    在上面这些方法中,布尔值会被强制转换为1(True)和0(False)。因此,sum经常被用来对布尔型数组中的TRUE值进行计数

    另外还有两个方法any和all,它们对布尔型数组非常有用。any用于测试数组中是否存在一个或多个True,而all则检查数组中所有值是否都是True。

    唯一化:np.unique()

    一些集合运算:


    伪随机数的生成


    相关文章

      网友评论

          本文标题:《利用Python进行数据分析》-2 Numpy

          本文链接:https://www.haomeiwen.com/subject/hfqfnrtx.html