• 【Python数据分析】NumPy之数组对象基础


    1.数组对象基础

    ndarray是NumPy的核心功能,其含义是:n-dimensional array,即多维数组。在Python中万物皆对象,数组也是一个对象,数组是NumPy的一个重要数据结构。

    2.初识数组对象

    在Jupyter中查看NumPy的版本(按shift + enter即可运行代码)

    import numpy as np
    np.__version__
    

    输出结果如下:

    2.1 创建第一个数组

    In [2]: data = np.array([1, 2, 3, 4, 5, 6])
    
    In [3]: data
    Out[3]: array([1, 2, 3, 4, 5, 6])
    
    In [4]: type(data)
    Out[4]: numpy.ndarray
    

    小提示:此处可以使用dir(data)查看数组对象的属性和方法。如果使用data?可以打开数组的官方文档

    2.2 数组元素的类型dtype

    # dtype可以查看数组元素的类型
    In [9]: data.dtype
    Out[9]: dtype('int32')
    

    从输出结果得出数组元素的类型为int32,即32位的整数。
    数组元素类型的改变

    
    In [18]: new_data = data.astype(np.float)
    
    In [19]: new_data.dtype
    Out[19]: dtype('float64')
    
    In [20]: data, data.dtype
    Out[20]: (array([1, 2, 3, 4, 5, 6]), dtype('int32'))
    
    In [21]: new_data
    Out[21]: array([1., 2., 3., 4., 5., 6.])
    

    数组data相对于new_data只有数组元素类型不同

    2.2 数组的外貌

    (1)shape可以查看数组的形状

    In [22]: data2 = np.array([1, 2, 3, 4])
    
    In [23]: data2.shape
    Out[23]: (4,)
    

    返回结果表示是一维数组。
    (2)ndim返回数组的维度

    
    In [24]: data2.ndim
    Out[24]: 1
    

    (3) size返回数组元素的个数

    In [25]: data2.size
    Out[25]: 4
    

    NumPy常用数组对象属性表

    属性 说明
    dtype 返回数组元素的类型
    shape 返回由整数组成的元组,元组中的每个整数依次对应数组的每个轴的元素个数
    size 返回一个整数,代表数组元素中的个数
    ndim 返回一个整数,代表数组轴的个数,即维度
    nbytes 返回一个整数,代表用于保存数组的字节数

    小提示:可以通过help(data2.dtype)或者data2.dtype?查看帮助文档

    3.数组的创建方法

    3.1 基本方法

    # 一维数组创建
    In [31]: np.array([1, 2, 3, 4, 5], dtype=float)
    Out[31]: array([1., 2., 3., 4., 5.])
    
    # 多维数组创建
    # 通过嵌套列表创建的数组就是多维数组
    
    In [33]: np.array([[1, 2, 3],[10, 20, 30],[100, 200, 300]])
    Out[33]:
    array([[  1,   2,   3],
           [ 10,  20,  30],
           [100, 200, 300]])
    # 注意:嵌套列表的每个元素的长度与类型都必须一致
    
    

    (3)指定维度创建

    # ndmin指定最小维度数
    In [39]: data3 = np.array([1, 2, 3, 4, 5, 6, 7, 8], ndmin=2)
    
    In [40]: data3.shape
    Out[40]: (1, 8)
    

    3.2 用函数创建数组

    In [41]: np.zeros((2,10))
    Out[41]:
    array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
    

    此处的np.zeros()能够创建一个完全由0组成的数组,(2,10)是以元组形式声明该数组的形状

    NumPy中创建特殊数组的函数

    函数 说明
    asarray 输入参数为列表、元组,或者由他们组成的嵌套对象或数组,返回一个数组。如果参数是数组,则返回该数组本身
    arange 根据开始值、结束值和步长创建一个数组
    ones、ones_like ones根据指定的形状和元素类型,创建元素值为1的数组。ones_like创建一个与某指定数组完全一样但元素值是1的数组
    zeros、zeros_like 与上述相同,只不过元素是0
    empty、empty_like 与上述相同,只不过没有填充任何元素数据,但分配了内存空间
    eye、identity 创建对角线元素是1、其他元素是0的二维数组
    diag 创建对角线元素是指定值,其余元素是0的二维数组
    linspace 根据开始值、结束值和元素数量创建元素是等差数列的数组
    logspace 根据开始值、结束值和元素数量和对数底创建元素是等比数列的数组

    3.3 创建自定义类型的数组

    In [67]: my_type = np.dtype([('name',str, 20),('age',np.int8),('salary', np.float32)])
    
    In [68]: items = np.array([('Jack',18,1000.00),('Lucy',19,2000.00)], dtype=my_type)
    
    In [69]: print(items.dtype)
    [('name', '<U20'), ('age', 'i1'), ('salary', '<f4')]
    

    3.4 form系列的函数创建数组

    创建9*9乘法结果表数组

    In [74]: np.fromfunction(lambda i, j:(i+1)*(j+1), (9, 9), dtype=np.int)
    Out[74]:
    array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9],
           [ 2,  4,  6,  8, 10, 12, 14, 16, 18],
           [ 3,  6,  9, 12, 15, 18, 21, 24, 27],
           [ 4,  8, 12, 16, 20, 24, 28, 32, 36],
           [ 5, 10, 15, 20, 25, 30, 35, 40, 45],
           [ 6, 12, 18, 24, 30, 36, 42, 48, 54],
           [ 7, 14, 21, 28, 35, 42, 49, 56, 63],
           [ 8, 16, 24, 32, 40, 48, 56, 64, 72],
           [ 9, 18, 27, 36, 45, 54, 63, 72, 81]])
    
  • 相关阅读:
    CodeDOM浅析(上)
    这段代码居然运行正常
    CodeDOM浅析(下)
    动态生成与编译(七)根据CodeDOM生成源代码
    动态生成与编译(九)CodeDOM的局限
    动态生成与编译(八)动态编译
    新年送大礼
    祝所有的女性朋友们节日快乐!
    预测人民币在2006年最终的收盘价
    2007年春节,祝朋友们:身体健康,万事如意! 度过一个愉快春节!
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12886895.html
Copyright © 2020-2023  润新知