美文网首页我爱编程
numpy的使用小结

numpy的使用小结

作者: jshan | 来源:发表于2018-03-27 00:50 被阅读0次

    数组创建

    numpy.empty(shape, dtype=float, order='C')
    numpy.zeros(shape, dtype=float, order='C')
    numpy.ones(shape, dtype=float, order='C')

    根据列表或者元组参数 a 创建数组

    numpy.asarray(a, dtype=None, order=None)

    根据缓冲区的对象作为参数 buffer 作为 ndarray

    """
    dtype 默认为 float,表示数据类型
    count 默认值为 -1,表示读取所有数据
    offset 默认为 0,表示从第一位读取
    """
    numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)

    根据可迭代对象 iterable 返回一个新的一维数组

    numpy.fromiter(iterable, dtype=float, count=-1)

    根据数值范围来创建数组

    """
    start 默认为 0,表示范围的起始值
    stop 范围的终止值(开区间,不包括该数)
    step 默认为 1,表示两个值的间隔
    dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型
    """
    numpy.arange(start, stop, step, dtype)

    指定范围内的均匀间隔数量,而不是步长,来创建数组

    """
    start 序列的起始值
    stop 序列的终止值,如果 endpoint 为 true,该值包含于序列中
    num 默认为 50,要生成的等间隔样例数量
    endpoint 默认为 true,表示是否包含 stop 值
    retstep 默认为 false, 表示是否返回连续数字之间的步长
    dtype 返回ndarray的数据类型
    """
    numpy.linspace(start, stop, num, endpoint, retstep, dtype)

    包含在对数刻度上均匀分布的数字,刻度的开始和结束端点是某个底数的幂,通常为10

    """
    类似于 numpy.linspace 函数,只是这里是对数刻度上的均匀分布而已,多了一个参数 base,默认为 10;并且没有 retstep 参数
    """
    numpy.logspace(start, stop, num, endpoint, base, dtype)

    索引方法:字段访问、基本切片和高级索引

    基本切片

    """

    1. 通过将 start stop 和 step 参数提供给内置的 slice 函数来构造一个 python slice 对象
      a = np.arange(10)
      s = slice(2, 7, 1) # [2, 3, 4, 5, 6]
      a[s]
      等效于
      a[2:7:1] 或者 a[2:7]
    2. 使用包括省略号 ... 来使选择元组的长度与数组的维度相同,如果在行位置使用省略号,它将返回包含行中元素的 ndarray
      """

    高级索引

    """
    如果一个 ndarray 是非元组序列,数据类型为整数或布尔值的ndarray,或者至少一个元素为序列对象的元组,
    我们就能够用它来索引ndarray。
    高级索引始终返回数据的副本,与此相反,切片只提供一个视图。
    """

    使用布尔值

    x = numpy.arange(12).reshape(4,3)
    print x[x > 5] # 获取大于5的元素

    使用 ~ 取补运算符 来过滤 NaN

    x = numpy.array([numpy.nan, 1, 2, numpy.nan, 3, 4, 5])
    print x[~numpy.isnan(x)]

    使用 iscomplex 过滤

    x = numpy.array([1, 2+6j, 5, 3.5+5j])
    print x[numpy.iscomplex(x)]

    广播 broadcast

    """
    当操作两个array时,numpy会逐个比较它们的shape(构成元组tuple),只有在下述情况下,两arrays才算兼容

    • 相等
    • 其中一个为1,(进而可进行拷贝拓展,达到shape匹配)

    注意:

    • 执行broadcast的前提是,两个ndarray执行的是 element-wise(按位加、按位减)的运算,而不是矩阵乘法的运算,矩阵乘法需要维度之间严格匹配;
    • 如果矩阵乘法 numpy.dot(A, B) 维度不匹配时,提示的错误不是 broadcast 而是 aligned
    • 一维数组置于矩阵乘法的左边,被视为一个行向量
    • 一维数组置于矩阵乘法的右边,被视为一个列向量
    • (这样和一个一维数组作用无论是在左还是在右)矩阵乘法运算结束得到的向量仍是一维数组
      """

    相关文章

      网友评论

        本文标题:numpy的使用小结

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