美文网首页
numpy系统第一阶段

numpy系统第一阶段

作者: 领带衬有黄金 | 来源:发表于2020-06-11 15:08 被阅读0次

    1. 安装anaconda环境

    该环境已经集成pandas、numpy、等众多数学库
    环境安装:https://www.jianshu.com/p/d3a5ec1d9a08
    使用jupyter notebook进行练习与实践,该命令可以激活浏览器,能够提供一个良好的用户交互p平台。

    2.NumPy: 数组和⽮量计算

    2.1 介绍

    NumPy是在⼀个连续的内存块中存储数据,独⽴于其他Python内置对象。NumPy的C语⾔编
    写的算法库可以操作内存,⽽不必进⾏类型检查或其它前期⼯作。⽐起Python的内置序列,
    NumPy数组使⽤的内存更少。
    特色:NumPy可以在整个数组上执⾏复杂的计算,⽽不需要Python的for循环。
    比较:基于NumPy的算法要⽐纯Python快10到100倍(甚⾄更快),并且使⽤的内存更少。

    2.2 ndarray生成方式

    使用原列表生成

    例如:a = [[1,2,3],[2,3,4]]         b = np.array(a)

    使用随机生成

    例如:data = np.random.randn(2, 3)

    生成位置数组,所有元素为0

    np.zeros(10)       np.zeros(3,3)

    生成单位数组,所有元素为1

    np.ones(10)         np.ones(3,3)

    生成随机元素的数组

    np.empty((2, 3, 2))

    生成等差数组

    np.arange([start, ]stop, [step, ]dtype=None)
    np.arange(1,5,2)->[1 3]

    2.3 numpy数组的常用属性

    data = np.array([[1,2,3],[2,3,4]])

    ndim
    使用:data.ndim = 2 获取ndarray的维度,也是获取数组的嵌套层数
    shape
    使用:data.shape = (2,3) 获取数组的形状
    dtype
    使用:data.dtype = int64 获取数组中所由元素共通的类型
    reshape
    使用 data.reshape(3,2),将满足该元素个数的数组进行重新调整形状
    astype:转换数组的数据类型
    说明:int32 --> float64 完全ojbk
             float64 --> int32 会将小数部分截断
             string_ --> float64 如果字符串数组表示的全是数字,也可以用astype转化为数值类型
    使用: float_arr = data.astype(np.float64)
    特征:调⽤astype总会创建⼀个新的数组(⼀个数据的备份)

    2.4 NumPy数组的运算

    不⽤编写循环即可对数据执⾏批量运算。NumPy⽤户称其为⽮量化(vectorization)。⼤⼩相 等的数组之间的任何算术运算都会将运算应⽤到元素级

    arr = np.array([[1., 2., 3.], [4., 5., 6.]])

    特点1:适用于元素个数一样 形状一样 进行加减乘除
    特点2:数组与标量的算术运算会将标量值传播到各个元素。
    例如:arr * 0.5 = array([[0.5, 1. , 1.5],[2. , 2.5, 3. ]])
    特点3:⼤⼩、结构相同的数组之间的⽐较会⽣成布尔值数组。
    例如:arr>arr1 = array([[False, False, False],[False, False, True]])

    2.5 基本的索引和切⽚

    arr = np.arange(10)

    arr[5] = 5
    arr[5:8] = array([5, 6, 7])
    arr[5:8] =(赋值) 12 -> array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
    arr_slice =(赋值) arr[5:8] -> arr_slice[1] =(赋值) 12345->array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8,
    9])

    切⽚[ : ]会给数组中的所有值赋值
    arr_slice[:] =(赋值) 64->array([ 0, 1, 2, 3, 4, 64, 64, 64, 8, 9])

    多维数组切片
    arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

    arr2d[2] = array([7, 8, 9])
    arr2d[0][2] = 3 arr2d[0, 2] = 3

    多维数组中,如果省略了后⾯的索引,则返回对象会是⼀个维度低⼀点的ndarray
    arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

    标量值和数组都可以被赋值给arr3d[0]

    old_values = arr3d[0].copy()
    old_values == array([[1, 2, 3], [4, 5, 6]])
    arr3d[0] = 42 # 所有值变为42
    arr3d[0] = old_values
    arr3d == array([[[ 1, 2, 3],[ 4, 5, 6]],[[ 7, 8, 9],[10, 11, 12]]])

    切⽚索引

    image.png

    布尔索引 :假设我们有⼀个⽤于存储数据的数组以及⼀个存储姓名的数组(含有重复项)

    image.png
    image.png

    花式索引:花式索引(Fancy indexing)是⼀个NumPy术语,它指的是利⽤整数数组进⾏索引

    image.png
    image.png

    相关文章

      网友评论

          本文标题:numpy系统第一阶段

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