• NumPy初识


    数据分析

      把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规则

    数据分析三剑客  

      NumPy Pandas Matplotlib

    安装:

    1 pip3 install numpy -i https://pypi.mirrors.ustc.edu.cn/simple/ 

    NumPy

    • 一个强大的N维数组对象

    • 复杂的(广播)功能

    • 用于集成C / C ++和Fortran代码的工具

    • 有用的线性代数,傅里叶变换和随机数功能

    ndarray对象更重要的属性是:

    ndarray.ndim
    数组的轴数(尺寸)。
    ndarray.shape
    数组的大小。这是一个整数元组,表示每个维度中数组的大小。对于具有n行和m的矩阵shape将是(n,m)shape因此元组的长度 是轴的数量ndim
    ndarray.size
    数组的元素总数。这等于元素的乘积shape
    ndarray.dtype
    描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。此外,NumPy还提供自己的类型。numpy.int32,numpy.int16和numpy.float64就是一些例子。
    ndarray.itemsize
    数组中每个元素的大小(以字节为单位)。例如,类型的元素数组float64itemsize8(= 64/8),而其中一个类型complex32itemsize4(= 32/8)。它相当于ndarray.dtype.itemsize
    ndarray.data
    包含数组实际元素的缓冲区。通常,我们不需要使用此属性,因为我们将使用索引工具访问数组中的元素。

    一维数组创建

    1 import numpy as np
    2 
    3 print(np.array([1, 2, 3, 4, 5]))

    二维数组创建

    1 arr = np.array([[1, 2, 3], ['a', 'b', 1.1]])
    2 print(arr)
    3 # numpy默认ndarray的所有元素类型相同的
    4 # 如果传进来的列表中包含不同的类型 统一为同一类型 str>float>int

    使用matplotlib.pyplot获取一个numpy数组 数据来源一张图片

    1 import matplotlib.pyplot as plt
    2 img_arr = plt.imread('./th.jpg')
    3 ret = plt.imshow(img_arr)
    4 res = img_arr - 100
    5 print(ret)
    6 print(plt.imshow(res))

    使用np的routines函数创建

    1 # np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None,axis=0)等差数列
    2 # print(np.linspace(1, 100, num=50)) 一维数组
    3 
    4 # print(np.arange(1, 100, 2))   一维数组
    5 
    6 # np.random.seed(1) 固定时间种子
    7 # print(np.random.randint(0, 100, size=(5, 6)))
    8 # print(np.random.random(size=(5, 6)))  0-1
    9 # print(np.random.randn(5, 6))  正太分布

    ndarray的基本操作

    1.索引
    1 arr = np.random.randint(0, 100, size=(5, 6))
    2 print(arr)
    3 # print(arr[0])
    4 # print(arr[[1, 2]])
    2.切片
     1 # 获取二维数组的前两行
     2 # print(arr[0:2])
     3 # print(arr.shape)
     4 
     5 # 获取二维数组的前两列
     6 # print(arr[:, 0:2])
     7 
     8 # 获取前两行和前两列
     9 # print(arr[0:2, 0:2])
    10 
    11 # 将数据反转 ::进行切片
    12 # 将数组行倒序
    13 # print(arr[::-1])
    14 # 将数组列倒序
    15 # print(arr[:, ::-1])
    16 # 将数组行和列都倒序
    17 # print(arr[::-1, ::-1])
    18 
    19 
    20 # 将图片列进行倒序
    21 # print(plt.imshow(img_arr[:, ::-1, :]))
    22 # 将图片行倒序
    23 # print(plt.imshow(img_arr[::-1, :, :]))
    24 # print(plt.imshow(img_arr[::-1, ::-1, ::-1]))
    3.变形 使用arr.reshape()函数  注意参数是一个tuple
    1 # 多维变一维数组
    2 # ret = arr.reshape((30, ))
    3 # print(ret)
    4 # 一维数组变多维
    5 # print(ret.reshape((-1, 15)))
    4.级联 将数组进行拼接(维度必须一样, 形状相符)
    1 # print(np.concatenate((arr, arr), axis=1))   # axis轴向 0列(y) 1行(x)
    2 # arr1 = np.random.randint(0, 100, size=(5, 5))
    3 # print(np.concatenate((arr, arr1), axis=1))  # 如果对列进行拼就要报错 一个5行6列 一个5行5列不匹配
    4 
    5 # 一个横向一个纵行
    6 # np.hstack()
    7 # np.vstack()

      5.排序与聚合操作

     1 # 切割
     2 # print(plt.imshow(np.split(img_arr, [300, ], axis=0)[0]))
     3 
     4 # 聚合操作
     5 
     6 #  很多
     7 # 0 每列 1每行
     8 # print(arr.sum(axis=0))
     9 # 最大最小
    10 # np.max()
    11 # np.min()
    12 
    13 # 平均
    14 # np.mean()
    15 
    16 # 排序
    17 print(np.sort(arr, axis=0))
    18 
    19 
    20 arr.sort(axis=0)
    21 print(arr)

    https://www.numpy.org.cn/article/ 



     

  • 相关阅读:
    POJ 3683 Priest John's Busiest Day (2-SAT+输出可行解)
    Codeforces #2B The least round way(DP)
    避免死锁的银行家算法C++程序实现
    源代码编译安装MySQL5.6.12具体过程
    Android 设计模式
    Java与设计模式-适配器模式
    Java和Flex整合报错(五)
    三层架构—再思考
    怎样让DBGrid在按住Shift点鼠标的同时能将连续范围的多行选中?
    找出你的短板
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11354101.html
Copyright © 2020-2023  润新知