Advertisement

【学习笔记】python数据分析-Numpy

阅读量:

目录

  • ndarray多维数组

    • 创建一个 ndarray数组
    • ndarray数组的属性
    • 数组变换
    • 数组元素迭代
    • 数组的索引
    • 数组的切片
  • 数组的运算

    • 数组标量运算
    • 通用算术函数
    • 条件逻辑运算
    • 统计运算
    • 数组排序
    • 集合运算

ndarray多维数组

通常来说,ndarry是一个通用的同构数据容器(即其中的所有元素都需要是相同的类型)。创建好一个ndarray数组时,同时会在内存中存储ndarray的shape和dtype。shape是ndarray维度大小的元组,dtype是解释说明ndarray数据类型的对象。


创建一个 ndarray数组

只需调用 NumPy 的 array 函数即可:

复制代码
    import numpy as np
    data1= [[5, 2, 3, 4, 9], [5, 7, 9, 20, 18]]
    arr1= np.array(data1)
    print(arr1)

运行结果如下图:
在这里插入图片描述

除了np.array创建数组外,numpy还内置一些特殊数组
,如arange函数:

复制代码
    data2=np.arange(10)
    print(data2)

运行结果如下:
在这里插入图片描述
,如random函数:

复制代码
    arr1=np.random.randint(100,200,size=(5,4))
    #生产100~200范围内的随机整数,size为5行4列
    print(arr1)

运行结果如下:
在这里插入图片描述

ndarray数组的属性

属性 解释
arr.ndim 数据轴的个数
arr.shape 数组的维度
arr.size 数组内元素的总个数
arr.dtype 数组内元素的数据类型
arr.itemsize 数组内每个元素的字节大小

其中数组中元素的数据类型dtype很有多,如:
(float)浮点数
(int)整数
(complex)复数
(bool)布尔值
(string)字符串
(object )Python对象

数据类型转换用 astype()函数:

复制代码
    data2=np.arange(10)
    print(data2)
    arr1=data2.astype(float)
    print(arr1)

运行结果如下:
在这里插入图片描述

数组变换

函数 说明
arr.reshape() 改变数据的维度
arr.ravel() 数据散开成一维
np.concatenate() 数组合并,axis参数指定合并轴
arr.transpose() 数组转置
复制代码
    import numpy as np
    
    '''数组重塑与散开'''
    arr=np.arange(9)
    arr1=arr.reshape((3,3))
    #reshape函数的参数为新维度的元组
    print(arr1)
    print(arr1.ravel())
    #数组重塑不会改变原数组
    
    '''数组合并'''
    arr2=np.arange(12).reshape((3,4))
    print(np.concatenate([arr1,arr2],axis=1))
    
    '''数组转置'''
    print(arr2)
    print(np.transpose(arr2))

运行结果如下:
在这里插入图片描述

数组元素迭代

numpy.ndarray.flat 是一个数组元素迭代器,实例如下:

复制代码
    arr1=np.random.randint(100,200,size=(2,2))
    print(arr1)
    for element in arr1.flat:
        print(element)

运行结果如下:
在这里插入图片描述

数组的索引

数组索引从0开始
数组的切片和索引返回都是原始数组的视图

复制代码
    arr1=np.random.randint(100,200,size=(3,4))
    print(arr1)
    print(arr1[2,3])
    #索引表示取arr数组的第3行,第4列对应的元素

运行结果如下:在这里插入图片描述

数组的切片

一维数组的切片类似python的列表的切片,实例如下:

复制代码
    arr1=np.arange(10)
    print(arr1)
    print(arr1[2:5])
    #与列表切片一样,左闭右开

运行结果如下:
在这里插入图片描述
高维数组的切片,实例如下:

复制代码
    arr1=np.arange(12).reshape(4,3)
    print(arr1)
    print(arr1[:,1])
    print(arr1[:,1:2])
    #传入参数是整数和切片的区别,只有使用冒号才会选取整个轴

运行结果如下:
在这里插入图片描述

数组的运算

数组之所以强大且重要的原因是,其不需要通过循环就可以完成批量计算


数组标量运算

复制代码
    arr1=np.arange(3)
    print(arr1)
    print(arr1*10)
    print(arr1*arr1)

运行结果如下:
在这里插入图片描述

通用算术函数

函数 输入
np.abs 求一数组绝对值
np.square 求一数组平方
np.add 求两数值和
np.minimum 求两数组最小值
np.modf 分离数组的整数和小数部分

条件逻辑运算

复制代码
    arr=np.random.randn(4,4)
    print(arr)
    arr1=np.where(arr>0,1,-1)
    #arr>0是判断条件,true选择第二个参数即1,false选择第三个参数即-1
    #数据分析中常用where函数来对数组进行处理
    print(arr1)

运行结果如下:
在这里插入图片描述

统计运算

复制代码
    arr=np.arange(9).reshape(3,3)
    print(arr.sum())
    #sum()用于求和
    print(arr.mean())
    #mean()用于求算术平均数
    print(arr.cumsum(1))
    #cumsum(1)表示按列方向累加,等同于axis=1
    print(arr.cumprod(0))
    #cumprod(0)表示按行方向累积,等同于axis=0

运行结果如下:
在这里插入图片描述

数组排序

复制代码
    arr=np.random.randn(5,3)
    print(arr)
    arr.sort()
    print(arr)
    #arr.sort()是对原数组arr排序,但不会返回值

运行结果如下:
在这里插入图片描述

集合运算

复制代码
    arr=np.array([2,3,3,2,8,1])
    print(arr)
    print(np.unique(arr))
    #数据分析中常用unique找出数组中的唯一值

运行结果如下:
在这里插入图片描述

写在最后:本文记录《从零开始学python数据分析》-罗攀编著 的个人学习笔记,供linlin和大家查阅,有误请指正。

全部评论 (0)

还没有任何评论哟~