zoukankan      html  css  js  c++  java
  • Numpy基础学习(一)

    1、Numpy认识
    Numpy 是用于数据科学计算的基础,不但能够完成科学计算任务,还能被用作高效地多维数据容器。用于存储和处理大型矩阵。
    Python 提供了一个 array 模块,和 list 不同,它直接保存数值,但是由于 Python 的 array模块不支持多维,也没有各种运算函数。
    Numpy 弥补了这一遗憾。Numpy 提供了一种数组对象——ndarray(下文统称数组)
    关于 ndarray 数组对象的认识:
    是一种内存连续的、存储单一数据类型的、可以存储多维数组的对象。
    存在两种存储方式:
    C 风格存储(C 语言风格) ----行优先存储
    F 风格存储(Fortran 语言风格)---列优先存储
    图解

    2、Numpy属性

    ndim 与 shape 属性

    import numpy as np
    
    # 创建数组
    # 可以使用np.array将list对象转化为数组
    arr = np.array(5)
    print('arr:\n', arr)
    print('arr:\n', type(arr))
    
    # arr = np.array([1, 2, 3, 4, 0])
    # print('arr:\n', arr)  # [1 2 3 4]
    # print('arr:\n', type(arr))  # <class 'numpy.ndarray'>
    # print('*' * 100)
    
    #
    # arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
    # print('arr:\n', arr)
    # print('arr:\n', type(arr))
    # print('*' * 100)
    
    #
    # arr = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], [[1, 2, 3, 4], [5, 6, 7, 8]]])
    # print('arr:\n', arr)
    # print('arr:\n', type(arr))
    # print('*' * 100)
    # 查看ndarray属性
    print('数组的维度:', arr.ndim)
    
    print('数组的形状:', arr.shape)  # 返回一个元组,
    
    # ndim = len(shape)
    
    # print('数组的元素个数为:', arr.size)
    #
    # print('数组的元素的数据类型为:', arr.dtype)  # int32 --->32位平台的int类型
    #
    # print('数组元素的占位大小:', arr.itemsize)  # 4 --->指定的占位的字节大小
    

    ndarry 数据类型

    import numpy as np
    
    # numpy中的数据类型: numpy中的数据类型封装了python基础的数据类型,并进行了细致划分,变为numpy.数据类型
    
    # numpy中数据类型的用法
    # 1、可以在创建数组的时候,通过dtype参数来指定数组的数据元素类型
    # arr = np.array([1, 2, 3, 4], dtype=np.float64)
    # print('arr:\n',arr)
    # print('arr:\n',arr.dtype)
    
    # 如果一个ndarray里面全部都是bool类型的数据---->bool数组
    # 0 转化为bool类型为False
    # 非0 转化为bool类型为True
    # arr = np.array([1, 2, 3, 0], dtype=np.bool)
    # print('arr:\n', arr)
    # print('arr:\n', arr.dtype)
    
    # 2、也可以数据之间的强制转化
    # print(np.int32(3.0))
    # print(np.float64(5))
    # print(np.float64('10'))
    # # print(np.float64('a'))  # 不能转化的
    # print(np.bool(1))
    # print(np.bool(0))
    
    # 3、如果已经创建好数组,可以通过astype来修改已知数组的数据类型
    # arr = np.array([1, 2, 3, 4])
    # print('arr:\n', arr)
    # print('arr:\n', type(arr))
    # print('arr:\n', arr.dtype)
    # print('*' * 100)
    
    # 对arr数据类型进行修改
    # arr = arr.astype(np.float64)
    # print('arr:\n', arr)
    # print('arr:\n', arr.dtype)
    
    # 注意:不能使用属性重新赋值
    # arr.dtype = np.float64  # 错误的
    # print('arr:\n', arr)
    # print('arr:\n', arr.dtype)
    
    # # 强制转化
    # arr = np.float64(arr)
    # print('arr:\n', arr)
    # print('arr:\n', arr.dtype)
    
    # 4、了解:存储复合类型
    # 需要自定义dtype来实现复合类型的存储
    # dtype = np.dtype([('name', np.str, 60), ('hight', np.float64), ('weight', np.float64)])
    #
    # # 创建数组
    # arr = np.array([('zs', 175.5, 65.0), ('ls', 170.0, 55.5), ('ww', 178.5, 63)], dtype=dtype)
    # print('arr:\n', arr)
    # print('arr:\n', arr.ndim)
    #
    # # 查看其他属性
    # print('arr:\n', arr.shape)
    # print('arr:\n', arr.itemsize)  # 保证数据中每一个元素都能进行保存
    # print('arr:\n', arr.dtype)  # [('name', '<U60'), ('hight', '<f8'), ('weight', '<f8')]
    
    # <U  <f  <i --->表示的字符串、float、int
    
    # 不使用ndarray来存储复合类型。 ---ndarray主要用来存储数值型数据用来科学计算的。
    
    
    # 形状 ---数组的shape
    # 如果已经确定的数组---修改形状 ---元素个数不能改变
    arr = np.array([1, 2, 3, 4, 5, 6])
    print('arr:\n', arr)
    print('arr:\n', arr.shape)
    print('arr:\n', arr.itemsize)
    print('*' * 100)
    
    # # 修改形状
    # # shape属性重新赋值
    # arr.shape = (3, 2)
    # print('arr:\n', arr)
    # print('arr:\n', arr.shape)
    
    # 也可以使用reshape来修改形状
    arr = arr.reshape((3, 2))
    print('arr:\n', arr)
    print('arr:\n', arr.shape)
    
    # 注意:shape属性重新赋值 相比于reshape 少了一个copy的过程
    
    
  • 相关阅读:
    clip属性,截取你想要显示的图片
    select背景灰色
    [转]ShowModal() = mrOk
    【转】Delphi-Unit文件结构
    析构方法
    [转]Delphi 7连接MySql /MariaDB
    MySQL/Mariadb遇见的问题
    更换数据库
    FlameRobin
    FireBird初使用
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/15743974.html
Copyright © 2011-2022 走看看